# config for sway # # Read `man 5 sway` for a complete reference. # Import theme first so invidual modifications can be made include ~/.config/sway/themes/gruvbox ### Variables # # Logo key. Use Mod1 for Alt. set $mod Mod4 # Home row direction keys, like vim set $left h set $down j set $up k set $right l # Your preferred terminal emulator set $term GDK_BACKEND=wayland kitty # Your preferred application launcher set $DMENU_LINES 6 set $menu wofi --show drun set $userpass rofi-rbw set $user rofi-rbw --target username set $pass rofi-rbw --target password set $totp rofi-rbw --target TOTP # Your preferred screen locker (also starts BOINC to ensure all idle time is # being used) set $lock swaylock -f --scaling=center -i ~/Pictures/wallpapers/the-northern-forest-1920×1080.jpg # Volume commands set $volume-up pactl set-sink-volume @DEFAULT_SINK@ +2% && killall -SIGUSR1 i3status set $volume-down pactl set-sink-volume @DEFAULT_SINK@ -2% && killall -SIGUSR1 i3status set $volume-mute pactl set-sink-mute @DEFAULT_SINK@ toggle && killall -SIGUSR1 i3status # Brightness commands set $brightness-up brightnessctl s 1%+ set $brightness-down brightnessctl s 1%- # BOINC commands set $start_boinc boinccmd --set_run_mode auto set $stop_boinc boinccmd --set_run_mode never # lazy-load Xwayland xwayland enable ### Output configuration # # Configuration for TV: output DP-1 pos 0,0 output HDMI-A-1 pos 1680,0 # # Example configuration: # # output VGA-1 resolution 1920x1080 position 1920,0 # # You can get the names of your outputs by running: swaymsg -t get_outputs #output eDP-1 resolution 1366X768 position 0,0 #output VGA-1 resolution 1680x1050 position 1366,0 ### Input configuration # # Example configuration: # # input "2:14:SynPS/2_Synaptics_TouchPad" { # dwt enabled # tap enabled # natural_scroll enabled # middle_emulation enabled # } # # You can get the names of your inputs by running: swaymsg -t get_inputs # Read `man 5 sway-input` for more information about this section. # Keyboard configuration input "16700:8197:DELL_DELL_USB_Keyboard" { xkb_layout "us,us" xkb_variant ",dvorak" xkb_options "caps:swapescape, grp:shifts_toggle" } input "1118:2092:Microsoft_Microsoft_Ergonomic_Keyboard" { xkb_layout "us,us" xkb_variant ",dvorak" xkb_options "caps:swapescape, grp:shifts_toggle" } input "1155:22288:STMicroelectronics_obins_anne_keyboard" { xkb_layout "us,us" xkb_variant ",dvorak" xkb_options "caps:swapescape, grp:shifts_toggle" } focus_follows_mouse no focus_wrapping yes font "Ubuntu Light 8" title_align center ### Key bindings # # Basics: # # start a terminal bindsym $mod+Return exec $term # kill focused window bindsym $mod+u kill # start your launcher/dmenu bindsym $mod+o exec $menu # screenshot bindsym $mod+x exec grim -c -g "$(slurp)" ~/Pictures/screenshots/$(date +'%Y-%m-%d-%H%M%S_grim.png') bindsym $mod+Shift+x exec grim -c ~/Pictures/screenshots/$(date +'%Y-%m-%d-%H%M%S_grim.png') # Drag floating windows by holding down $mod and left mouse button. # Resize them with right mouse button + $mod. # Despite the name, also works for non-floating windows. # Change normal to inverse to use left mouse button for resizing and right # mouse button for dragging. floating_modifier $mod normal # reload the configuration file bindsym $mod+Alt+c reload # # Moving around: # # Move your focus around bindsym $mod+$left focus left bindsym $mod+$down focus down bindsym $mod+$up focus up bindsym $mod+$right focus right # or use $mod+[up|down|left|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 Alt bindsym $mod+Alt+$left move left bindsym $mod+Alt+$down move down bindsym $mod+Alt+$up move up bindsym $mod+Alt+$right move right # ditto, with arrow keys bindsym $mod+Alt+Left move left bindsym $mod+Alt+Down move down bindsym $mod+Alt+Up move up bindsym $mod+Alt+Right move right # # Workspaces: # # switch to workspace bindsym $mod+1 workspace 1 workspace 1 output DP-2 bindsym $mod+2 workspace 2 workspace 2 output DP-2 bindsym $mod+3 workspace 3 workspace 3 output DP-2 bindsym $mod+4 workspace 4 workspace 4 output DP-2 bindsym $mod+5 workspace 5 workspace 5 output HDMI-A-1 bindsym $mod+6 workspace 6 workspace 6 output HDMI-A-1 bindsym $mod+7 workspace 7 workspace 7 output HDMI-A-1 bindsym $mod+8 workspace 8 workspace 8 output HDMI-A-1 bindsym $mod+9 workspace 9 workspace 9 output HDMI-A-1 bindsym $mod+0 workspace 10 workspace 10 output HDMI-A-1 bindsym $mod+i workspace back_and_forth bindsym alt+tab workspace back_and_forth bindsym $mod+semicolon workspace prev bindsym $mod+apostrophe workspace next bindsym $mod+Control+l move workspace to output HDMI-A-1 bindsym $mod+Control+h move workspace to output DP-2 # move focused container to workspace bindsym $mod+Alt+1 move container to workspace 1 bindsym $mod+Alt+2 move container to workspace 2 bindsym $mod+Alt+3 move container to workspace 3 bindsym $mod+Alt+4 move container to workspace 4 bindsym $mod+Alt+5 move container to workspace 5 bindsym $mod+Alt+6 move container to workspace 6 bindsym $mod+Alt+7 move container to workspace 7 bindsym $mod+Alt+8 move container to workspace 8 bindsym $mod+Alt+9 move container to workspace 9 bindsym $mod+Alt+0 move container to workspace 10 bindsym $mod+Alt+t move container to workspace prev bindsym $mod+Alt+y move container to workspace next # Note: workspaces can have any name you want, not just numbers. # We just use 1-10 as the default. # # Layout stuff: # # You can "split" the current object of your focus with # $mod+b or $mod+v, for horizontal and vertical splits # respectively. (This is disgusting, but the only way I can find # to bind square brackets) bindsym $mod+m splith bindsym $mod+n splitv # Switch the current container between different layout styles bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+e layout toggle split # Make the current focus fullscreen bindsym $mod+f fullscreen # Toggle the current focus between tiling and floating mode bindsym $mod+Alt+space floating toggle # Swap focus between the tiling area and the floating area bindsym $mod+space focus mode_toggle # move focus to the parent container bindsym $mod+a focus parent bindsym $mod+d focus child # # Scratchpad: # # Sway has a "scratchpad", which is a bag of holding for windows. # You can send windows there and get them back later. # Move the currently focused window to the scratchpad bindsym $mod+Alt+minus move scratchpad # Show the next scratchpad window or hide the focused scratchpad window. # If there are multiple scratchpad windows, this command cycles through them. bindsym $mod+minus scratchpad show # # Resizing containers: # mode "resize" { # left will shrink the containers width # right will grow the containers width # up will shrink the containers height # down will grow the containers height 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 # ditto, with 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 # return to default mode bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" mode "(l)ock, (s)uspend, (e)xit, (r)eboot, (p)ower" { bindsym l exec $lock, mode "default" bindsym s exec $lock && loginctl suspend, mode "default" bindsym e exit bindsym r exec loginctl reboot, mode "default" bindsym p exec loginctl poweroff, mode "default" bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+y mode "(l)ock, (s)uspend, (e)xit, (r)eboot, (p)ower" mode "(a)utotype, (u)sername only, (p)assword only, (t) totp" { bindsym a exec $userpass, mode "default" bindsym u exec $user, mode "default" bindsym p exec $pass, mode "default" bindsym t exec $totp, mode "default" bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+p mode "(a)utotype, (u)sername only, (p)assword only, (t) totp" bindsym $mod+shift+p exec wofi-pass --type ### Brightness control keybindings bindsym --locked XF86MonBrightnessUp exec --no-startup-id $brightness-up bindsym --locked XF86MonBrightnessDown exec --no-startup-id $brightness-down ### Volume control keybindings bindsym --locked XF86AudioRaiseVolume exec --no-startup-id $volume-up bindsym --locked XF86AudioLowerVolume exec --no-startup-id $volume-down bindsym --locked XF86AudioMute exec --no-startup-id $volume-mute # Same, for external keyboards bindsym --locked $mod+period exec --no-startup-id $volume-up bindsym --locked $mod+comma exec --no-startup-id $volume-down bindsym --locked $mod+slash exec --no-startup-id $volume-mute # # Status Bar: # # Read `man 5 sway-bar` for more information about this section. bar { swaybar_command waybar } # swayidle exec swayidle -w \ # timeout 300 '$start_boinc && $lock' \ # timeout 600 'swaymsg "output * dpms off" && $start_boinc' \ # resume 'swaymsg "output * dpms on"' \ # before-sleep '$start_boinc && $lock' \ # window rules to make Steam games behave nice #inhibit_idle fullscreen # NOTE: app_id, title, etc. can potentially be found using `swaymsg -t get_tree` # window rules to deeply integrate browser with WM (aka I'm lazy and want to # save myself a few keystrokes on opening) exec firefox for_window [app_id="Firefox"] move container to workspace 9 for_window [app_id="pinentry*"]; floating enable # Stick window to output bindsym $mod+grave sticky toggle ### Export GTK theme to all programs running under Sway set $gnome-schema org.gnome.desktop.interface exec_always { gsettings set $gnome-schema gtk-theme 'Adwaita-dark' gsettings set $gnome-schema icon-theme 'Adwaita' gsettings set $gnome-schema cursor-theme 'Adwaita' } ### Notification Service exec mako ### Screen tint exec wlsunset -l 42.2 -L -83.4 ### for BOINC GPU computing ### exec xhost si:localuser:boinc ### devmon (automounting daemon) ### exec devmon ### pipewire (PulseAudio/ALSA/JACK replacement) ### exec pipewire exec pipewire-pulse ### https://wiki.archlinux.org/title/Xsettingsd ### exec xsettingsd exec variety exec blueman-applet include /etc/sway/config.d/*