### Variables # Set logo key as main modifier set $mod Mod4 # Terminal set $term $TERMINAL # Menu set $menu exec rofi -show-icons # Home row direction keys, like vim set $left h set $down j set $up k set $right l # System commands set $lock_cmd swaylock --grace 10 --fade-in 1 set $sleep_cmd systemctl suspend # Colors include colorscheme # Basic color configuration using the Base16 variables for windows and borders. # Property Name Border BG Text Indicator Child Border client.focused $base05 $base0D $base00 $base0D $base0D client.focused_inactive $base01 $base01 $base05 $base03 $base01 client.unfocused $base01 $base00 $base05 $base01 $base01 client.urgent $base08 $base08 $base00 $base08 $base08 client.placeholder $base00 $base00 $base05 $base00 $base00 client.background $base07 ### Output configuration # Set wallpaper output * bg ~/.local/share/swaybg/gruvbox_sway.png fill ### Idle configuration # lock: 10 min # display: 20 min # sleep: 30 min exec swayidle -w \ timeout 600 '$lock_cmd' \ timeout 1200 'swaymsg "output * dpms off"' \ resume 'swaymsg "output * dpms on"' \ timeout 1800 '$sleep_cmd' \ before-sleep '$lock_cmd' \ lock '$lock_cmd' # Inhibit idle if a window is in fullscreen for_window [shell=".*"] inhibit_idle fullscreen ### Input configuration # Hide mouse cursor when not used # NOTE: Configure asynchronously with swaymsg as workaround for Firefox crash on reload # See: https://bugzilla.mozilla.org/show_bug.cgi?id=1652820#c51 exec_always swaymsg seat * hide_cursor 8000 input type:pointer { accel_profile flat } input type:touchpad { tap enabled natural_scroll enabled } input type:keyboard { xkb_options "caps:escape" } ### Key bindings # Power menu bindsym $mod+Escape exec $menu -modi p:rofi-power-menu -show p bindsym $mod+Shift+Escape exec swaynag -t warning -m 'Do you really want to exit sway?' -B 'Yes, exit sway' 'swaymsg exit' # Run menu bindsym $mod+space exec $menu -show drun bindsym $mod+shift+space exec $menu -show run # Launch terminal bindsym $mod+return exec $TERMINAL bindsym $mod+shift+return exec $menu -show ssh # Launch browser bindsym $mod+w exec $BROWSER # Take screenshots bindsym Print exec grim "screenshot-$(date +'%F-%H-%M-%S').png" bindsym Print+$mod exec grim -g "$(slurp)" "screenshot-$(date +'%F-%H-%M-%S').png" # Lock screen bindsym $mod+ctrl+q exec loginctl lock-session # Media control bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- bindsym --locked XF86MonBrightnessUp exec brightnessctl set +5% bindsym --locked XF86AudioPlay exec playerctl play-pause bindsym --locked XF86AudioNext exec playerctl next bindsym --locked XF86AudioPrev exec playerctl previous # Kill focused window bindsym $mod+q kill # Reload the configuration file bindsym $mod+Shift+c reload # Move focus around bindsym $mod+$left focus left bindsym $mod+$down focus down bindsym $mod+$up focus up bindsym $mod+$right focus right bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right # Move the focused window with the same, but add Shift 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+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right # 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 10 bindsym $mod+ctrl+6 workspace back_and_forth # Move focused container to workspace bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1 bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2 bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3 bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4 bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5 bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6 bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7 bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8 bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9 bindsym $mod+Shift+0 move container to workspace number 10 # Splitting direction bindsym $mod+Shift+backslash split toggle bindsym $mod+minus splith bindsym $mod+backslash splitv # Make current focus fullscreen bindsym $mod+f fullscreen # Resizing containers bindsym $mod+r mode 'resize' mode 'resize' { # Resizing keys bindsym $left resize shrink width 10px bindsym $down resize grow height 10px bindsym $up resize shrink height 10px bindsym $right resize grow width 10px bindsym Left resize shrink width 10px bindsym Down resize grow height 10px bindsym Up resize shrink height 10px bindsym Right resize grow width 10px # Return to default mode bindsym Escape mode 'default' } # # Status Bar # bar { status_command i3status-rs font "Fira Code Nerd Font" Normal 12 colors { background $base00 separator $base01 statusline $base04 # State Border BG Text focused_workspace $base05 $base0D $base00 active_workspace $base05 $base03 $base00 inactive_workspace $base03 $base01 $base05 urgent_workspace $base08 $base08 $base00 binding_mode $base00 $base0A $base00 } } # Hide window title bars and borders default_border pixel hide_edge_borders smart # Clipboard manager exec wl-paste --type text --watch clipman store --no-persist bindsym $mod+v exec clipman pick --tool=rofi # Password manager bindsym $mod+b exec rofi-rbw # Yubikey TOTP manager bindsym $mod+y exec rofi-ykman include ~/.config/sway/config.d/* include /etc/sway/config.d/* exec systemctl --user start sway-session.target