# # SWAY CONFIG # # REQUIREMENTS: # | foot | terminal emulator # | brightnessctl | control brightness # | pipewire | audio processor # | pipewire-pulse | PulseAudio support for pipewire # | wireplumber | audio session manager # | mako | notification service # | bemenu | menu prompt # | yambar | status bar # | wlsunset | screen temperature # | swaylock | lock service # | swayidle | idle management # | mpd | music server # | lavalauncher | shortcut menu # Keys set $mod Mod4 set $up j set $down k set $left l set $right semicolon # Applications set $term footclient set $shell bash -c set $lock swaylock # Sizes set $igap 40 set $ogap 40 # Wallpaper set $wallpaper ~/.cache/wallpaper set $lockwallpaper ~/.cache/lockwallpaper exec [ -f ~/.cache/wallpaper ] || cp /usr/share/backgrounds/sway/*_1920x1080.png ~/.cache/wallpaper exec [ -f ~/.cache/lockwallpaper ] || cp ~/.cache/wallpaper ~/.cache/lockwallpaper # Default settings exec brightnessctl set 20% # Services exec mpd >/var/log/user/mpd.log 2>&1 exec foot --server >/var/log/user/foot.log 2>&1 exec mako >/var/log/user/mako.log 2>&1 exec wlsunset -l 51.5 -L -0.1 -t 2800 -T 6000 >/var/log/user/wlsunset.log 2>&1 exec pipewire >/var/log/user/pipewire.log 2>&1 exec pipewire-pulse >/var/log/user/pipewire-pulse.log 2>&1 exec wireplumber >/var/log/user/wireplumber.log 2>&1 exec_always sh -c "pkill yambar; yambar >/var/log/user/yambar.log 2>&1" # exec ~/.config/sway/scripts/lock-screen # Inputs seat * hide_cursor when-typing enable input "type:touchpad" { dwt enable # 'disable when typing' tap enable natural_scroll disable middle_emulation enable } input "type:keyboard" { xkb_layout gb xkb_options caps:ctrl_modifier } # Outputs output * bg $wallpaper fill output eDP-1 { resolution 2994x1840@60Hz scale 2 } # Gaps gaps inner $igap gaps outer $ogap gaps horizontal 60 # Borders smart_borders off default_border pixel 2 set $focuscol "#b4befe" set $inactcol "#313244" client.focused $focuscol $focuscol #000000 $focuscol client.unfocused $inactcol $inactcol #000000 $inactcol client.focused_inactive $inactcol $inactcol #000000 $inactcol # Keybindings # bindsym Menu exec bemenu-run --prompt='Run: ' bindsym $mod+Insert exec $shell 'bookmark add' bindsym $mod+Return exec $term bindsym $mod+Shift+e exec swaynag -t warning -m 'Exit Sway?' -B 'Yes, exit sway' 'pkill pipewire*; pkill wireplumber; pkill mako; swaymsg exit' bindsym $mod+Space exec bemenu-run --prompt='Run: ' #bindsym $mod+Shift+Space exec wmenu-run -p "Run" -f "Hack 12" -M 00ffff -m 000000 -N 000000 -n aaaaaa -S 00ffff -s 000000 bindsym $mod+b exec $shell 'bookmark' bindsym $mod+bracketleft exec mpc prev bindsym $mod+bracketright exec mpc next bindsym $mod+e exec thunar bindsym $mod+u exec swayimg -g ~/images/wallpaper bindsym $mod+i exec $term vim bindsym $mod+n exec makoctl dismiss bindsym $mod+o exec mpc stop bindsym $mod+p exec mpd-menu bindsym $mod+q kill bindsym $mod+r reload bindsym $mod+w exec firefox bindsym Ctrl+Alt+Delete exit floating_modifier $mod normal bindswitch --reload --locked lid:off exec $lock bindsym XF86Sleep exec $lock bindsym XF86PowerOff exec sudo halt bindsym --locked XF86MonBrightnessUp exec brightnessctl -s set +10% bindsym --locked XF86MonBrightnessDown exec brightnessctl -s -n10 set 10%- bindsym XF86AudioMute exec volume mute bindsym XF86AudioRaiseVolume exec volume up bindsym XF86AudioLowerVolume exec volume down bindsym XF86AudioMicMute exec volume mute mic bindsym $mod+h splith bindsym $mod+v splitv bindsym $mod+c layout stacking bindsym $mod+t layout tabbed bindsym $mod+s layout toggle split bindsym $mod+m fullscreen bindsym $mod+Tab floating toggle bindsym $mod+Control+Tab focus mode_toggle bindsym $mod+y sticky toggle bindsym $mod+Shift+Grave move scratchpad bindsym $mod+Grave scratchpad show # All Gaps (toggle, increase, reduce, reset) bindsym $mod+g gaps inner current toggle $igap, gaps outer current toggle $ogap bindsym $mod+Ctrl+g gaps inner current plus 10, gaps outer current plus 10 bindsym $mod+Shift+g gaps inner current minus 10, gaps outer current minus 10 bindsym $mod+Shift+Ctrl+g gaps inner all set $igap, gaps outer all set $ogap # Outer gaps (increase, reduce, reset) bindsym $mod+Ctrl+o gaps outer current plus 10, gaps vertical current plus 10 bindsym $mod+Shift+o gaps outer current minus 10, gaps vertical current minus 10 bindsym $mod+Shift+Ctrl+o gaps outer all set $ogap # Inner gaps (increase, reduce, reset) bindsym $mod+Ctrl+i gaps inner current plus 10, gaps vertical current plus 10 bindsym $mod+Shift+i gaps inner current minus 10, gaps vertical current minus 10 bindsym $mod+Shift+Ctrl+i gaps inner all set $igap # Focus window bindsym $mod+$up focus up bindsym $mod+$down focus down bindsym $mod+$left focus left bindsym $mod+$right focus right bindsym $mod+a focus parent bindsym $mod+Ctrl+a focus child # Swap window bindsym $mod+Shift+$up move up 20px bindsym $mod+Shift+$down move down 20px bindsym $mod+Shift+$left move left 20px bindsym $mod+Shift+$right move right 20px # Resize window bindsym $mod+Shift+Equal resize grow height 20px bindsym $mod+Shift+Minus resize shrink height 20px bindsym $mod+Control+Minus resize shrink width 20px bindsym $mod+Control+Equal resize grow width 20px # Switch to workspace 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 0 # Move focused to workspace 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 0 bindsym $mod+z mode "resize" mode "resize" { bindsym $up resize shrink height 10px bindsym $down resize grow height 10px bindsym $left resize shrink width 10px bindsym $right resize grow width 10px bindsym Up resize shrink height 10px bindsym Down resize grow height 10px bindsym Left resize shrink width 10px bindsym Right resize grow width 10px bindsym Return mode "default" bindsym Escape mode "default" } # WINDOW RULES # get window dimensions: #swaymsg -t get_tree | jq -r '.. | select(.type?) | select(.app_id==MYAPP) | .window_rect | "\(.width)x\(.height)"' #for_window [title="."] floating enable #for_window [app_id="$term"] floating disable for_window [app_id="firefox"] floating disable, inhibit_idle fullscreen for_window [app_id="mpv"] floating disable, inhibit_idle fullscreen for_window [app_id="net.lutris.Lutris"] move absolute position centered, resize set 880 px 600 px for_window [shell="xwayland"] title_format "%title [XWayland]" for_window [class="steam"] floating enable #for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable, resize set width 1030 height 710 # Firefox #for_window [app_id="firefox"] floating enable, move absolute position centered, resize set 100 ppt 100 ppt for_window [window_role="pop-up"] floating enable for_window [window_role="bubble"] floating enable for_window [window_role="task_dialog"] floating enable for_window [window_type="dialog"] floating enable for_window [window_type="menu"] floating enable for_window [window_role="Preferences"] floating enable for_window [window_role="About"] floating enable for_window [title="Rename ."] floating enable for_window [class="Pinentry."] floating enable # Startup #exec swaymsg "workspace 0; exec footclient --title=btop btop"