# Default config for sway # # Copy this to ~/.config/sway/config and edit it to your liking. # # Read `man 5 sway` for a complete reference. ### Variables # # Logo key. Use Mod1 for Alt. set $mod Mod1 # Home row direction keys, like vim #set $left h #set $down j #set $up k #set $right l # Your preferred terminal emulator set $term alacritty # Your preferred application launcher # Note: pass the final command to swaymsg so that the resulting window can be opened # on the original workspace that the command was run on. #set $menu wofi --show drun set $menu rofi -show drun # Font for window titles. font pango:NotoSans 12 ### Output configuration # set $wallpaper_dir /media/sync/images/wallpapers set $screenlock '~/.config/sway/scripts/lock-now $wallpaper_dir' # exec --no-startup-id ~/.config/sway/scripts/wallpaper-rotate $wallpaper_dir # Example configuration: # #output HDMI-A-1 resolution 1920x1080@120hz position 1920,0 # # You can get the names of your outputs by running: swaymsg -t get_outputs output DP-2 adaptive_sync on ### Idle configuration # # Import the compositor socket into the systemd --user environment. Without # this, systemd-managed services (and dbus-activated apps like portals) can't # reach the compositor at all - this is why swayidle silently failed to run # after being restarted via systemd earlier. exec --no-startup-id systemctl --user import-environment WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP DISPLAY exec --no-startup-id hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP DISPLAY # # Example configuration: # exec swayidle -w \ timeout 300 $screenlock \ timeout 900 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ before-sleep $screenlock # # This will lock your screen after 300 seconds (5 min) of inactivity, then # turn off your displays after 900 seconds (15 min), and turn your screens # back on when resumed. It will also lock your screen before your computer # goes to sleep. ### Input configuration input "type:touchpad" { tap enabled natural_scroll enabled middle_emulation enabled } # 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. input "2:7:SynPS/2_Synaptics_TouchPad" { events disabled_on_external_mouse } input "5426:156:Razer_Razer_DeathAdder_V2_X_HyperSpeed_Mouse" { accel_profile "flat" # disable mouse acceleration (enabled by default; to set it manually, use "adaptive" instead of "flat") pointer_accel 0.5 # set mouse sensitivity (between -1 and 1) } #exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh exec --no-startup-id source ~/.config/fcitx.sh exec --no-startup-id fcitx5 exec --no-startup-id kwalletd6 #exec --no-startup-id blueman-applet exec --no-startup-id owncloud exec --no-startup-id waybar exec --no-startup-id nm-applet --indicator exec --no-startup-id nohup gentoo-pipewire-launcher restart >/dev/null 2>&1 & exec --no-startup-id xset m 1/1 0 exec --no-startup-id /usr/lib/pam_kwallet_init set $lower-volume wpctl set-volume @DEFAULT_SINK@ 0.01- set $raise-volume wpctl set-volume @DEFAULT_SINK@ 0.01+ --limit 1 set $mute-sink wpctl set-mute @DEFAULT_SINK@ toggle set $mute-source wpctl set-mute @DEFAULT_SOURCE@ toggle bindsym XF86AudioRaiseVolume exec --no-startup-id $raise-volume bindsym XF86AudioLowerVolume exec --no-startup-id $lower-volume bindsym XF86AudioMute exec --no-startup-id $mute-sink bindsym XF86AudioMicMute exec --no-startup-id $mute-source bindsym $mod+slash exec --no-startup-id $mute-sink bindsym $mod+period exec --no-startup-id $raise-volume bindsym $mod+comma exec --no-startup-id $lower-volume # Brightness key bindings bindsym XF86MonBrightnessUp exec brightnessctl set +5% bindsym XF86MonBrightnessDown exec brightnessctl set 5%- # Media player key bindings (need media-sound/playerctl for playerctl.) bindsym XF86AudioPlay exec playerctl play bindsym XF86AudioPause exec playerctl pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous bindsym $mod+Shift+comma exec playerctl previous bindsym $mod+Shift+period exec playerctl next bindsym $mod+Shift+slash exec playerctl play-pause bindsym Print exec --no-startup-id bash -c 'f="$(xdg-user-dir PICTURES)/$(date +%s_grim.png)" && grim -g "$(slurp)" "$f" && wl-copy < "$f" && notify-send "Screenshot saved" "$f"' bindsym $mod+Print exec --no-startup-id bash -c 'f="$(xdg-user-dir PICTURES)/$(date +%s_grim.png)" && grim "$f" && wl-copy < "$f" && notify-send "Screenshot saved" "$f"' ### Key bindings # # Basics: # # Start a terminal bindsym $mod+Return exec $term # Kill focused window bindsym $mod+Shift+q kill # Start your launcher bindsym $mod+d exec $menu # bindsym $mod+l exec ~/.config/sway/scripts/lock-now $wallpaper_dir bindsym $mod+Shift+o exec ~/.config/sway/scripts/lock-now $wallpaper_dir && systemctl suspend # 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 # Reload the configuration file bindsym $mod+Shift+c reload # restart sway in place (preserves your layout/session, can be used to upgrade sway) bindsym $mod+Shift+r restart # Exit sway (logs you out of your Wayland session) #bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' bindsym $mod+Shift+p exec systemctl poweroff bindsym $mod+Shift+l exec swaymsg exit # # 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 # move focused window #bindsym $mod+Shift+j move left #bindsym $mod+Shift+k move down #bindsym $mod+Shift+l move up #bindsym $mod+Shift+semicolon move right # alternatively, you can use the cursor keys: bindsym $mod+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right # Workspaces: # # 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 # Move focused container 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 10 # 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+h or $mod+v, for horizontal and vertical splits # respectively. bindsym $mod+h split h bindsym $mod+v split v # 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+Shift+space fullscreen toggle # Toggle the current focus between tiling and floating mode bindsym $mod+f 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 # # 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+Shift+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 # bindsym $mod+Tab workspace back_and_forth # Resizing containers: # 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" } bindsym $mod+r mode "resize" # Status bar is provided by waybar (started above); no built-in sway bar. # class border bground text indicator child_border client.focused #3A7CA5 #3A7CA5 #E2EBF0 #0D1B27 #3A7CA5 client.placeholder #0D1B27 #0D1B27 #BDD5E4 #0D1B27 #0D1B27 client.unfocused #0D1B27 #152535 #6A8DA0 #0D1B27 #152535 client.focused_inactive #1A3347 #1A3347 #6A8DA0 #1A3347 #1A3347 for_window [class="^.*"] border pixel 1 # Don't lock or blank the screen while a fullscreen window (game, video, # presentation) is focused - ties into the same idle protocol swayidle uses. for_window [app_id="^.*"] inhibit_idle fullscreen for_window [class="^.*"] inhibit_idle fullscreen #floating for_window [app_id="signal"] floating enable for_window [app_id="fluffychat"] floating enable for_window [app_id="im.dino.Dino"] floating enable for_window [app_id="desktopclient.owncloud.com.owncloud"] floating enable for_window [app_id="firefox-bin"] move to workspace 1 for_window [app_id="thunderbird"] move container to workspace 4 for_window [app_id="thunar"] move container to workspace 3 for_window [title="wtui"] floating enable include ~./config/sway/* #include /etc/sway/config.d/*