# sway config file # This file is augmented by the default sway configuration in tw/system.scm, # which is used for wlgreet's sway session. Common options should go there. # Appearance and Styling {{{ title_align center default_border pixel 3 default_floating_border pixel 3 hide_edge_borders smart gaps inner 15 gaps outer 0 smart_gaps on # TODO: Zoom needs XWayland despite [General]xwayland=false in zoomus.conf # xwayland disable # swayfx effects # swaymsg -r -t get_outputs | jq -r '.[0].layer_shell_surfaces | .[] | .namespace' layer_effects "waybar" corner_radius 0 # Catppuccin colours # Foregrounds set $c_fg #cdd6f4 set $c_inactive #7f849c # Backgrounds set $c_bg #11111b set $c_active #585b70 set $c_urgent #f9e2af # class border background text indicator child_border client.focused $c_active $c_active $c_fg $c_active $c_active client.focused_inactive $c_bg $c_bg $c_fg $c_bg $c_bg client.unfocused $c_bg $c_bg $c_inactive $c_bg $c_bg client.urgent $c_urgent $c_urgent $c_fg $c_urgent $c_urgent client.placeholder $c_bg $c_bg $c_inactive $c_bg $c_bg client.background $c_bg # }}} # Output Configuration {{{ ## Framework laptop # Laptop screen output "BOE 0x0BCA Unknown" scale 1.333 ## Work laptop # Laptop screen output "AU Optronics 0x4CA3 Unknown" position 0 0 # Displays at work output "HP Inc. HP Z24u G3 CN42322LXZ" position -1920 0 output "Samsung Electric Company SyncMaster H9XZ110607" position -3840 0 # }}} # Basic Configuration {{{ # use the Super key as $mod set $mod Mod4 # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod # essential applications bindsym $mod+Return exec foot bindsym $mod+i exec icecat --new-window bindsym $mod+shift+i exec icecat --new-tab "$(wl-paste -np)" bindsym $mod+e exec $ASYNC_EDITOR # Use ASYNC_EDITOR so I can continue using ranger while the editor # remains open in a separate window. bindsym $mod+slash exec EDITOR=$ASYNC_EDITOR foot ranger bindsym $mod+semicolon exec --no-startup-id nheko bindsym $mod+shift+semicolon exec --no-startup-id foot aerc bindsym $mod+y exec foot pulsemixer # volume bindsym XF86AudioRaiseVolume exec --no-startup-id volume +5 bindsym XF86AudioLowerVolume exec --no-startup-id volume -5 bindsym XF86AudioMute exec --no-startup-id volume toggle-mute # screenshots bindsym Print exec --no-startup-id slurp -o | grim -g- -l9 bindsym shift+Print exec --no-startup-id swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp | grim -g- -l9 # notifications bindsym $mod+n exec dunstctl close bindsym $mod+shift+n exec dunstctl history-pop bindsym $mod+period exec dunstctl context # screen locking and sleep handling bindsym $mod+shift+slash exec loginctl lock-session bindswitch --locked lid:on exec loginctl suspend # kill focused window bindsym $mod+shift+q kill # rofi menus bindsym $mod+d exec rofi -show combi bindsym $mod+shift+e exec rofi -show session:sessionmenu bindsym $mod+q exec qalculate-gtk bindsym $mod+p exec passmenu --type-all bindsym $mod+shift+p exec passmenu --type-pass bindsym $mod+o exec passmenu --type-otp bindsym $mod+shift+Return exec rofi -show ssh # }}} # Basic Movement {{{ # change focus bindsym $mod+h focus left bindsym $mod+j focus down bindsym $mod+k focus up bindsym $mod+l focus right 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+h move left bindsym $mod+shift+j move down bindsym $mod+shift+k move up bindsym $mod+shift+l 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 bindsym $mod+a focus parent bindsym $mod+shift+a focus child # }}} # Layout {{{ bindsym $mod+b split h bindsym $mod+v split v # enter fullscreen mode for the focused container bindsym $mod+f fullscreen toggle bindsym $mod+shift+f floating enable, resize set 1920 1080, move position 0 0 # change container layout (stacked, tabbed, toggle split) bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+x layout toggle split bindsym $mod+shift+space floating toggle # change focus between tiling / floating windows bindsym $mod+space focus mode_toggle # scratchpad bindsym $mod+numbersign scratchpad show bindsym $mod+shift+numbersign move to scratchpad bindsym $mod+apostrophe sticky disable, floating disable bindsym $mod+shift+apostrophe sticky enable, floating enable # move workspaces bindsym $mod+shift+comma move workspace to output left bindsym $mod+shift+period move workspace to output right # }}} # Default Workspaces {{{ # switch to workspace bindsym $mod+Escape workspace back_and_forth bindsym $mod+1 workspace 1 bindsym $mod+2 workspace 2 bindsym $mod+3 workspace 3 bindsym $mod+4 workspace 4 bindsym $mod+5 workspace 5 bindsym $mod+6 workspace 6 bindsym $mod+7 workspace 7 bindsym $mod+8 workspace 8 bindsym $mod+9 workspace 9 bindsym $mod+0 workspace 10 bindsym $mod+parenleft workspace prev bindsym $mod+parenright workspace next # Swiping with 3 fingers should move workspaces. Emulate "natural scrolling" # where swiping right moves the current workspace off to the right, so the # previous/left-hand workspace comes into focus. bindgesture swipe:3:right workspace prev bindgesture swipe:3:left workspace next # move focused container to workspace bindsym $mod+shift+Escape move container to workspace back_and_forth bindsym $mod+shift+1 move container to workspace 1 bindsym $mod+shift+2 move container to workspace 2 bindsym $mod+shift+3 move container to workspace 3 bindsym $mod+shift+4 move container to workspace 4 bindsym $mod+shift+5 move container to workspace 5 bindsym $mod+shift+6 move container to workspace 6 bindsym $mod+shift+7 move container to workspace 7 bindsym $mod+shift+8 move container to workspace 8 bindsym $mod+shift+9 move container to workspace 9 bindsym $mod+shift+0 move container to workspace 10 bindsym $mod+shift+parenleft move container to workspace prev bindsym $mod+shift+parenright move container to workspace next # }}} # Custom Workspaces {{{ set $ws_terminal 0:>_ bindsym $mod+grave workspace "$ws_terminal" bindsym $mod+shift+grave move container to workspace "$ws_terminal" set $ws_coding 50:🖊️ bindsym $mod+c workspace "$ws_coding" bindsym $mod+shift+c move container to workspace "$ws_coding" set $ws_games 60:🎮 bindsym $mod+g workspace "$ws_games" bindsym $mod+shift+g move container to workspace "$ws_games" set $ws_music 80:🎵 bindsym $mod+u workspace "$ws_music" bindsym $mod+shift+u move container to workspace "$ws_music" set $ws_messaging 90:💬 bindsym $mod+m workspace "$ws_messaging" bindsym $mod+shift+m move container to workspace "$ws_messaging" # Mark xwayland windows specially. for_window [shell="xwayland"] title_format "%title (%shell)" assign [class="^Franz$"] "$ws_messaging" assign [window_role="^weechat$"] "$ws_messaging" assign [window_role="^mutt$"] "$ws_messaging" assign [class="^evolution-initial$"] "$ws_messaging" assign [class="^kontact$"] "$ws_messaging" # NOTE: no_focus will also be ignored for the first window on a workspace as # there shouldn’t be a reason to not focus the window in this case. This allows # for better usability in combination with workspace_layout. (From i3 docs) #no_focus [class="^Franz$"] #no_focus [window_role="^weechat$"] #no_focus [window_role="^mutt$"] #no_focus [class="^evolution-initial$"] for_window [title="PlayOnLinux"] floating enable for_window [app_id="^qalculate-gtk$"] floating enable for_window [title="^aerc$"] move container to workspace "$ws_messaging" # annoying pop-up from Bluetooth network manager for_window [app_id="^.blueman-applet-real$"] kill # Zoom popups (e.g. "user has started sharing their screen") # "Normal" Zoom windows have titles other than a plain "zoom". for_window [class="^zoom$" title="^zoom$"] floating enable no_focus [class="^zoom$" title="^zoom$"] # }}} # Modes {{{ mode "resize" { bindsym h resize shrink width 10 px or 10 ppt bindsym j resize grow height 10 px or 10 ppt bindsym k resize shrink height 10 px or 10 ppt bindsym l resize grow width 10 px or 10 ppt bindsym shift+h resize shrink width 5 px or 5 ppt bindsym shift+j resize grow height 5 px or 5 ppt bindsym shift+k resize shrink height 5 px or 5 ppt bindsym shift+l resize grow width 5 px or 5 ppt 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 bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" # }}}