SwayFX
SwayFX - тайлинговый оконный менеджер, который может Вам пригодиться, если нужен i3wm только на wayland. Является форком Sway, с добавлением визуальных эффектов. Конфигурационный файл почти всеми параметрами дублирует конфиг i3, по этому для моего старенького ноута переход был почти безболезненным.
Конфигурационый файл, по которому видно какой конфиг я адаптировал:
# Выбираем клавишу mod, которая участвует в управлении SwayFX (Клавиша Win)
set $mod Mod4
# Шрифт и его размер
font pango:JetBrains Mono 10
# Скругления
corner_radius 10
smart_corner_radius enable
# Размытие
blur on
blur_xray on
blur_passes 1
blur_radius 1
#Тени
shadows on
shadows_on_csd on
shadow_blur_radius 1
shadow_color #0000007F
# Затемнение неактивных окон
default_dim_inactive 0.0
dim_inactive_colors.unfocused #000000FF
dim_inactive_colors.urgent #900000FF
# Автозапуск требуемых Вам приложений
# exec swaymsg input "2:7:SynPS/2_Synaptics_TouchPad" events disabled (отключал touichpad на ноуте)
exec setxkbmap -model pc105 -layout us,ru -option grp:alt_shift_toggle # включает русскую раскладку клавиатуры
exec swaybg -i /mnt/HDD/images/archwall.png # укажите свой путь к картинке, которую хотите видеть на рабочем столе
exec numlockx on # включение numlock при запуске
exec waybar
exec mako
exec Telegram
exec thunderbird
exec firefox
exec /usr/lib/notification-daemon-1.0/notification-daemon
exec flameshot --wayland # приложение для скриншотов
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec nm-applet --indicator
# приложение, которое может отправить Ваш ЭВМ в сон с течением времени
exec_always swayidle -w \
timeout 1000 '/home/tehop/.config/sway/swaylock-effects.sh' \
timeout 1500 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep '/home/tehop/.config/sway/swaylock-effects.sh'
# Внешний вид (отступы, рамки)
gaps inner 6
gaps outer 1
default_border pixel 0
smart_borders on
# Комбинации клавиш
bindsym Mod1+p exec flameshot gui # скриншоты
bindsym Mod1+e exec thunar # файловый менеджер
bindsym Mod1+t exec /home/tehop/.scripts/touchpad.sh # вкл/выкл touchpad
# Правила окон
assign [app_id="firefox"] 2 # firefox на втором рабочем столе
assign [class="steam"] 4 # steam на четвертом рабочем столе
assign [app_id="org.telegram.desktop"] 5 # по аналогии на пятом
assign [app_id="org.mozilla.Thunderbird"] 5
# Фокус на приложениях при открытии
# for_window [app_id="Vivaldi-stable"] focus
# for_window [app_id="org.telegram.desktop"] focus
# добавил оформление конкретно для отдельных приложений
for_window [app_id="waybar"] blur enable # размытие waybar
for_window [app_id="waybar"] blur_radius 8
for_window [app_id="waybar"] blur_passes 2
for_window [app_id="foot"] opacity 0.95 # эмулятор терминала, добавил прозрачности
for_window [app_id="Thunar"] floating enable # плавающий режим Thunar
for_window [app_id="Thunar"] resize set width 1000 height 600 # размеры плавающего окна (ширина, высота)
for_window [app_id="kate"] floating enable # по аналогии с редактором текста kate
for_window [app_id="kate"] resize set width 1000 height 600
#for_window [app_id="org.telegram.desktop"] floating enable
#for_window [app_id="org.telegram.desktop"] resize set width 300 height 700
#for_window [app_id="org.telegram.desktop"] move absolute position 50 1500 # а тут мы задаем расположение по оси X и Y
#for_window [app_id="thunderbird"] floating enable
#for_window [app_id="thunderbird"] resize set width 850 height 700
#for_window [app_id="thunderbird"] move absolute position 16 56
for_window [title="rofi - Powermenu"] floating enable
for_window [title="rofi - Powermenu"] focus
# for_window [app_id="Rofi"] resize set 200 125
# for_window [app_id="Rofi"] move absolute position 10px 45px
#for_window [title="cal"] floating enable
#for_window [title="cal"] focus
#for_window [title="cal"] resize set width 600 height 400
#for_window [title="cal"] move absolute position 758px 45px
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
# NetworkManager для управления сетью, появится в трее.
exec --no-startup-id nm-applet
# Какие то настройки звука, но я сюда не лез.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# ПКМ + $mod (которую вы указали ниже) позволит Вам менять размер плавающего окна
# ЛКМ + $mod позволит Вам перетаскивать плавающее окно по workspace-у
floating_modifier $mod
# Комбинация открывает терминал в тайловом режиме.
bindsym $mod+Return exec foot
# Комбинация закроет активное окно
bindsym $mod+Shift+q kill
# dmenu если пользуетесь, можно раскомментировать.
#bindsym $mod+d exec --no-startup-id dmenu_run -l 10 -nf '#F3E7B1' -nb '#4B4B4B' -sb '#f3e7b1' -sf '#4b4b4b' -fn 'JetBrains Mono'reboot -p 'run'
# а это Rofi, которым пользуюсь я
bindcode $mod+40 exec ~/.config/rofi/launchers/type-1/launcher.sh
# ещё какая-то dmenu-ха
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
# смена фокуса тайловых окон по аналогии с vi, vim, neovim с клавишей $mod
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
# смена фокуса тайловых окон обычными стрелочками с клавишей $mod
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# сдвинуть активное окно, поменяв его с соседним с vi, vim, neovim с клавишей $mod
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+colon move right
# сдвинуть активное окно, поменяв его с соседним обычными стрелочками с клавишей $mod
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# установить разделение рабочего пространства горизонтально при открытии окна
bindsym $mod+h split h
# установить разделение рабочего пространства вертикально при открытии окна
bindsym $mod+v split v
# открыть окно на весь экран
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split) (не пользовался, попробуйте =))
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# свернуть окно в плавающий режим и обратно развернуть в тайловый
bindsym $mod+Shift+space floating toggle
# смена фокусировки между плавающим и тайловым окнами
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
#bindsym $mod+d focus child
# наименования workspace-ов (в waybar, я наименования поменял)
set $1 "1"
set $2 "2"
set $3 "3"
set $4 "4"
set $5 "5"
set $6 "6"
set $7 "7"
set $8 "8"
set $9 "9"
set $10 "10"
# комбинации клавишь для смены workspace-ов (ws)
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# комбинации клавишь для перемещения активных окон между ws
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# перезапуск конфига
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# настройки resize mode-а, которые меняют размер тайловых окон
# тут я ничего не трогал
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the window’s width.
# Pressing right will grow the window’s width.
# Pressing up will shrink the window’s height.
# Pressing down will grow the window’s height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
# войти и выйти из resize mode-а комбинайтей ниже
bindsym $mod+r mode "resize"
# настройки раскладок клавиатуры (Alt + Shift)
input type:keyboard {
xkb_layout "us,ru"
xkb_options "grp:alt_shift_toggle"
}
Для установки thunar, flameshot, kate, numlockx, swayidle, swaybg, swaylock, foot, mako, используем офф. репозиторий. Можете устанавливать по отдельности. Для отображения иконок приложений в Rofi требуется установить иконки Papirus так же из репозотория
sudo pacman -Sy flameshot kate numlockx swayidle swaybg swaylock foot mako rofi papirus-icon-theme
Swaylock запускается, когда swayidle отсчитает свой таймер. Вот скрипт с моими цветами:
swaylock \
--screenshots \
--effect-blur 3x2 \
--clock \
--indicator \
--indicator-radius 100 \
--indicator-thickness 10 \
--inside-color 3B4252 \
--ring-color 88C0D0 \
--line-color 00000000 \
--key-hl-color 5E81AC \
--bs-hl-color A3BE8C \
--caps-lock-key-hl-color D08770 \
--caps-lock-bs-hl-color BF616A \
--separator-color 00000000 \
--text-color ECEFF4 \
--inside-ver-color 8FBCBB \
--ring-ver-color 81A1C1 \
--inside-wrong-color D08770 \
--ring-wrong-color BF616A \
--inside-clear-color 4C566A \
--ring-clear-color 81A1C1 \
--fade-in 0.3
Swaylock делает скриншот, размывает его, устанавливает на фон, настройки индикаторов, элементов и пр. Менял я только цвета.
Для Rofi я нашёл какие-то стилёчки, использовал самый первый, который мне более-менее подходил, изменив цвета.
Все файлы можно найти в готовых конфигах (во вкладке "Прочее").
Архив с Rofi, настройки Mako найдёте в вкладке с Hyprland.