Переход на Sway

Решил попробовать Wayland. По этой причине пришлось перейти с awesome на sway.

Содержание

1 Общая информация

2 Установка sway

emerge -v gui-wm/sway

2.1 Репозитории gentoo

eselect repository enable wayland-desktop
emaint sync --repo wayland-desktop
eselect repository enable guru
emaint sync --repo guru

3 Первоначальная конфигурация

  • Файл конфигурации ищется в следующем порядке:
    • ~/.sway/config;
    • $XDG_CONFIG_HOME/sway/config;
    • ~/.i3/config;
    • $XDG_CONFIG_HOME/i3/config;
    • /etc/sway/config;
    • /etc/i3/config.
    • Переменная окружения $XDG_CONFIG_HOME по умолчанию установлена в ~/.config/.
  • Пакет устанавливает глобальную конфигурацию в /etc/sway/config.
  • При желании внести изменение в конфигурацию можно скопировать файл глобальной конфигурации в локальную:
    mkdir -p ~/.config/sway
    cp /etc/sway/config ~/.config/sway/
    

4 Конфигурация устройств ввода

4.1 Общая информация

  • Сводка доступных опций:
    man 5 sway-input
    
  • Список устройств ввода можно получить, запустив:
    swaymsg -t get_inputs
    
  • Идентификатор устройства используется в файле конфигурации:
    input <identifier> {
        # ...config options...
    }
    
  • Можно иметь несколько конфигураций для разных устройств:
    # default layout
    input "1:1:AT_Translated_Set_2_keyboard" {
       xkb_layout us
    }
    
    # custom layout for an external keyboard
    input "1452:591:Custom_Keyboard" {
       xkb_layout YourCustomLayout
    }
    

4.2 Раскладка клавиатуры

  • Информация по параметрам:
    man 7 xkeyboard-config
    
  • Конфигурация раскладки:
    # or input <identifier>
    input "type:keyboard" {
        xkb_layout us,de
        xkb_variant ,nodeadkeys
        xkb_options grp:alt_shift_toggle
    }
    
  • Настройка модификаций доступна через xkb_options.
  • Варианты можно найти в /usr/share/X11/xkb/symbols/{altwin,capslock,compose,ctrl}, соответствующее имя параметра находится в /usr/share/X11/xkb/rules/base.
  • Для команд xkb_layout, xkb_model, xkb_options, xkb_rules, xkb_variant несколько вариантов разделяются запятыми.
  • Чтобы активировать несколько опций, необходимо перечислить их через запятую, например xkb_options caps:escape,altwin:swap_lalt_lwin;.
  • Если записать опции в несколько строк, будет действовать только последняя.

4.2.1 Примеры модификации

  • Caps Lock работает как Escape: xkb_options caps:escape.
  • Поменять местами Escape и Caps Lock: xkb_options caps:swapescape.
  • Caps Lock меняется с Control: xkb_options ctrl:nocaps.
  • Caps Lock становится дополнительным Control: xkb_options caps:ctrl_modifier.
  • Поменять местами левый Alt и Super, установить Caps Lock как Escape: xkb_options altwin:swap_lalt_lwin,caps:escape.
  • Menu становится дополнительным Super: xkb_options altwin:menu_win.

5 Комбинации клавиш

5.1 Режимы и управление окнами

Клавиатурная комбинацияОписание
Mod + Shift + SpaceПереключение окна в плавающий режим и обратно
Mod + Shift + minusОтправка окна в блокнот (scratchpad)
Mod + minusСворачивание, вызов окна в блокноте (scratchpad)
Mod + bГоризонтальное разделение
Mod + vВертикальное разделение
Mod + eПереключить разделение
Mod + sСтековое размещение (stacking layout)
Mod + wРазмещение с табами (tabbed layout)
Mod + rИ изменение размеров, используем h, j, k , l или ←,→,↑,↓, выход из режима — Esc
Mod + {←,→,↑,↓} или Mod + {h,j,k,l}Перемещение по окнам
Mod + Shift + {←,→,↑,↓} или Mod + Shift + {h,j,k,l}Меняет позицию окна
Mod + {0..9}Переключение между workspace’ами
Mod + Shift + {0..9}Перемещение окна на заданный workspace
Mod + =Shift + =qЗакрыть текущее окно
Mod + =fРаскрыть окно во весь экран или свернуть его обратно

5.2 Разное

Клавиатурная комбинацияОписание
Mod + Enterоткрыть новый терминал
Mod + dзапустить программу
Mod + =Shift + =cперечитать конфигурацию sway (перестартовать)
Mod + Shift + eВыйти из sway

6 Замена приложений

7 Совместимость приложений

7.1 Java

7.1.1 Серое окно, приложения не меняют размер с помощью WM, меню сразу закрываются

  • В стандартных тулкитах для Java жестко зашит список оконных менеджеров.
  • Следует установить переменную окружения:
    export _JAVA_AWT_WM_NONREPARENTING=1
    

7.1.2 Меню в приложениях плавает отдельно, им невозможно пользоваться

  • В выпусках Java до версии 9 GTK интерфейс ориентирован на GTK2, в последующих версиях на GTK3.
  • GTK LookAndFeel может работать с GTK версий 2, 2.2 и 3.
  • По умолчанию используется GTK3.
  • Следует явно задать более старую версию:
    export JAVA_TOOL_OPTIONS='-Djdk.gtk.version=2.2'
    
  • Например, в файле ~/.profile:
    if [ "$XDG_SESSION_DESKTOP" = "sway" ] || [ "$XDG_SESSION_DESKTOP" = "i3" ]
    then
        # https://github.com/swaywm/sway/issues/595
        export _JAVA_AWT_WM_NONREPARENTING=1
        export JAVA_TOOL_OPTIONS='-Djdk.gtk.version=2.2'
    fi
    

7.2 Приложения GTK+ запускаются с задержкой

  • Приложения GTK+ ожидают запуск xdg-desktop-portal через D-Bus.
  • Ожидание прекращается по таймауту потому, что активированная служба D-Bus не знает, к какому WAYLAND_DISPLAY подключиться.
  • Это можно исправить, добавив в файл конфигурации следующее:
    exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
    exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
    

7.3 Qt приложения

  • Qt по умолчанию использует бэкэнд X11 вместо собственного бэкэнда Wayland. Чтобы использовать бэкэнд Wayland, установите QT_QPA_PLATFORM=wayland.
  • Qt прорисовает оформление окон на стороне клиента. Чтобы отключить это, установите QT_WAYLAND_DISABLE_WINDOWDECORATION="1".

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры прикладной информатики и теории вероятностей

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие