summaryrefslogtreecommitdiff
path: root/home-config/sway
diff options
context:
space:
mode:
authorRyan Schanzenbacher <ryan@rschanz.org>2023-05-17 00:21:45 -0400
committerRyan Schanzenbacher <ryan@rschanz.org>2023-05-17 00:21:45 -0400
commitbf6a91943d2c5852025ed1d1aadb30d83edf0354 (patch)
treea7c4efde6a1e2d18919016e9dff81aee8db8f0fe /home-config/sway
parent4fe3a734d104fa1836255b18f8d8bcf4aeaa407f (diff)
Added personal channel, starting to add more dotfiles
Diffstat (limited to 'home-config/sway')
-rw-r--r--home-config/sway/config325
1 files changed, 325 insertions, 0 deletions
diff --git a/home-config/sway/config b/home-config/sway/config
new file mode 100644
index 0000000..28953b8
--- /dev/null
+++ b/home-config/sway/config
@@ -0,0 +1,325 @@
1# Ryan's config for sway
2#
3# Dependencies:
4# waybar
5# fuzzel
6# light (with proper udev setting for backlight control)
7# alacritty
8# swaylock-effects
9# swayidle
10# dejavu-fonts-ttf
11# nerd-fonts-otf
12# noto-fonts-cjk
13# mako / libnotify
14# grim / slurp / wl-clipboard
15# swaybg
16# pipewire / pipewire-pulse / pipewire-jack / wireplumber
17# blueman
18# spotifyd
19# syslog-ng
20# OPTIONAL: wdisplays (monitor layout)
21# ...
22
23### Variables
24exec sh ~/.profile
25
26# Load up the user session dbus
27exec dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus
28
29#
30# Logo key. Use Mod1 for Alt.
31set $mod Mod4
32# Home row direction keys, like vim
33set $left h
34set $down j
35set $up k
36set $right l
37# Your preferred terminal emulator
38set $term alacritty
39# Your preferred application launcher
40# Note: pass the final command to swaymsg so that the resulting window can be opened
41# on the original workspace that the command was run on.
42#set $menu bemenu-run --no-exec | xargs swaymsg exec --
43set $menu fuzzel --width=35 --font='Hack:weight=bold:size=12' --background-color='282a36fa' --selection-color='3d4460fa' --line-height=20 --border-radius=20
44
45# Set lock screen settings
46set $lock 'swaylock --screenshots --clock --indicator --grace 3 --fade-in 1 --effect-blur 7x5 --effect-greyscale'
47# Same as above but no grace period
48set $lock_now 'swaylock --screenshots --clock --indicator --fade-in 1 --effect-blur 7x5 --effect-greyscale'
49### Output configuration
50#
51# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
52output * bg ~/Pictures/Wallpapers/mountains.jpg fill
53#
54# Example configuration:
55#
56# output HDMI-A-1 resolution 1920x1080 position 1920,0
57#
58# You can get the names of your outputs by running: swaymsg -t get_outputs (moved to ~/.config/sway/monitors)
59
60include ~/.config/sway/monitors
61
62#output eDP-1 mode 1920x1080@60.008Hz pos 1920 590
63#output HDMI-A-1 mode 1920x1080@74.972Hz pos 0 0
64
65### Idle configuration
66#
67# Example configuration:
68#
69exec swayidle -w \
70 timeout 300 $lock \
71 timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
72 before-sleep 'swaylock -f -c 000000'
73
74# Winkey+L lock key combo
75bindsym $mod+l exec $lock_now
76#
77#Winkey+Shift+L to lock then go to sleep. zzz must run with no passwd
78bindsym $mod+Shift+l exec 'swaylock --screenshots --clock --indicator --effect-blur 7x5 --effect-greyscale & sleep 0.5; doas zzz'
79
80# This will lock your screen after 300 seconds of inactivity, then turn off
81# your displays after another 300 seconds, and turn your screens back on when
82# resumed. It will also lock your screen before your computer goes to sleep.
83
84### Input configuration
85#
86# Example configuration:
87#
88# input "2:14:SynPS/2_Synaptics_TouchPad" {
89# dwt enabled
90# tap enabled
91# natural_scroll enabled
92# middle_emulation enabled
93# }
94#
95# You can get the names of your inputs by running: swaymsg -t get_inputs
96# Read `man 5 sway-input` for more information about this section.
97
98gaps inner 10
99
100### Key bindings
101#
102# Basics:
103#
104 # Start a terminal
105 bindsym $mod+Return exec $term
106
107 # Kill focused window
108 bindsym $mod+Shift+q kill
109
110 # Start your launcher
111 bindsym $mod+d exec $menu
112
113 # Drag floating windows by holding down $mod and left mouse button.
114 # Resize them with right mouse button + $mod.
115 # Despite the name, also works for non-floating windows.
116 # Change normal to inverse to use left mouse button for resizing and right
117 # mouse button for dragging.
118 floating_modifier $mod normal
119
120 # Reload the configuration file
121 bindsym $mod+Shift+c reload
122 #Restart your session
123 bindsym $mod+Shift+r restart
124
125 # Exit sway (logs you out of your Wayland session)
126 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'
127#
128# Moving around:
129#
130 # Move your focus around
131 bindsym $mod+$left focus left
132 bindsym $mod+$down focus down
133 bindsym $mod+$up focus up
134 #bindsym $mod+$right focus right
135 # Or use $mod+[up|down|left|right]
136 bindsym $mod+Left focus left
137 bindsym $mod+Down focus down
138 bindsym $mod+Up focus up
139 bindsym $mod+Right focus right
140
141 # Move the focused window with the same, but add Shift
142 bindsym $mod+Shift+$left move left
143 bindsym $mod+Shift+$down move down
144 bindsym $mod+Shift+$up move up
145 #bindsym $mod+Shift+$right move right
146 # Ditto, with arrow keys
147 bindsym $mod+Shift+Left move left
148 bindsym $mod+Shift+Down move down
149 bindsym $mod+Shift+Up move up
150 bindsym $mod+Shift+Right move right
151
152 # Since I run more than one monitor most of the time, these let me move
153 # workspaces between physical screens
154 bindsym $mod+Control+Shift+Right move workspace to output right
155 bindsym $mod+Control+Shift+Left move workspace to output left
156 # Now I could do the same with up and down but I don't have any of those
157#
158# Workspaces:
159#
160 # Switch to workspace
161 bindsym $mod+1 workspace number 1
162 bindsym $mod+2 workspace number 2
163 bindsym $mod+3 workspace number 3
164 bindsym $mod+4 workspace number 4
165 bindsym $mod+5 workspace number 5
166 bindsym $mod+6 workspace number 6
167 bindsym $mod+7 workspace number 7
168 bindsym $mod+8 workspace number 8
169 bindsym $mod+9 workspace number 9
170 bindsym $mod+0 workspace number 10
171 # Move focused container to workspace
172 bindsym $mod+Shift+1 move container to workspace number 1
173 bindsym $mod+Shift+2 move container to workspace number 2
174 bindsym $mod+Shift+3 move container to workspace number 3
175 bindsym $mod+Shift+4 move container to workspace number 4
176 bindsym $mod+Shift+5 move container to workspace number 5
177 bindsym $mod+Shift+6 move container to workspace number 6
178 bindsym $mod+Shift+7 move container to workspace number 7
179 bindsym $mod+Shift+8 move container to workspace number 8
180 bindsym $mod+Shift+9 move container to workspace number 9
181 bindsym $mod+Shift+0 move container to workspace number 10
182 # Note: workspaces can have any name you want, not just numbers.
183 # We just use 1-10 as the default.
184#
185# Layout stuff:
186#
187 # You can "split" the current object of your focus with
188 # $mod+b or $mod+v, for horizontal and vertical splits
189 # respectively.
190 bindsym $mod+b splith
191 bindsym $mod+v splitv
192
193 # Switch the current container between different layout styles
194 bindsym $mod+s layout stacking
195 bindsym $mod+w layout tabbed
196 bindsym $mod+e layout toggle split
197
198 # Make the current focus fullscreen
199 bindsym $mod+f fullscreen
200
201 # Toggle the current focus between tiling and floating mode
202 bindsym $mod+Shift+space floating toggle
203
204 # Swap focus between the tiling area and the floating area
205 bindsym $mod+space focus mode_toggle
206
207 # Move focus to the parent container
208 bindsym $mod+a focus parent
209
210 bindsym $mod+Ctrl+Right focus sibling next
211
212#
213# Misc. button bindings
214#
215 # Some custom keybinds for various keys on my laptop
216 bindsym XF86MonBrightnessUp exec light -A 10
217 bindsym XF86MonBrightnessDown exec light -U 10
218
219#
220# Scratchpad:
221#
222 # Sway has a "scratchpad", which is a bag of holding for windows.
223 # You can send windows there and get them back later.
224
225 # Move the currently focused window to the scratchpad
226 bindsym $mod+Shift+minus move scratchpad
227
228 # Show the next scratchpad window or hide the focused scratchpad window.
229 # If there are multiple scratchpad windows, this command cycles through them.
230 bindsym $mod+minus scratchpad show
231#
232# Resizing containers:
233#
234mode "resize" {
235 # left will shrink the containers width
236 # right will grow the containers width
237 # up will shrink the containers height
238 # down will grow the containers height
239 bindsym $left resize shrink width 10px
240 bindsym $down resize grow height 10px
241 bindsym $up resize shrink height 10px
242 bindsym $right resize grow width 10px
243
244 # Ditto, with arrow keys
245 bindsym Left resize shrink width 10px
246 bindsym Down resize grow height 10px
247 bindsym Up resize shrink height 10px
248 bindsym Right resize grow width 10px
249
250 # Return to default mode
251 bindsym Return mode "default"
252 bindsym Escape mode "default"
253}
254bindsym $mod+r mode "resize"
255
256#
257# Status Bar:
258#
259# Read `man 5 sway-bar` for more information about this section.
260#bar {
261# position top
262#
263# # When the status_command prints a new line to stdout, swaybar updates.
264# # The default just shows the current date and time.
265# status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
266#
267# colors {
268# statusline #ffffff
269# background #323232
270# inactive_workspace #32323200 #32323200 #5c5c5c
271# }
272#}
273
274bar {
275 swaybar_command waybar
276}
277
278exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
279
280# Numlock on startup
281input * xkb_numlock enabled
282
283# Audio Server
284#exec pipewire
285#exec wireplumber
286#exec pipewire-pulse
287
288# Bluetooth
289exec blueman-applet
290
291# Spotifyd
292#exec spotifyd
293
294# Notification controls
295exec mako
296bindsym $mod+n exec makoctl dismiss
297bindsym $mod+Shift+n exec makoctl dismiss -a
298
299# Flameshot position fix and autostart
300#exec QT_QPA_PLATFORM=wayland flameshot
301#for_window [app_id="flameshot"] border pixel 0, floating enable, fullscreen disable, move absolute position 0 0
302
303# Screenshots to clipboard
304bindsym $mod+Shift+S exec grim -g "$(slurp)" - | wl-copy -t image/png
305bindsym $mod+Print exec grim - | wl-copy -t image/png
306#bindsym $mod+Ctrl+Shift+S exec grim -g "$(slurp)" $(echo "$HOME/Pictures/Screenshot_$(date +'%Y%m%d')_$(date +'%H%M%S').png")
307bindsym $mod+Ctrl+Print exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') - | wl-copy -t image/png
308
309# Zathura notes window resize
310for_window [app_id="org.pwmt.zathura" title="^.*notes.pdf$"] resize set width 775
311
312# Syncthing start
313exec syncthing serve --no-browser
314
315# Force various windows to be floating
316# Firefox PIP YT Player
317for_window [app_id="firefox-default" title="^Picture-in-Picture$"] floating enable, resize set 578 326, border none, sticky enable
318# Duo 2FA
319for_window [app_id="firefox-default" title="^Activate Security Key — Mozilla Firefox$"] floating enable
320for_window [app_id="firefox-default" title="^Nightly — Sharing Indicator$"] floating enable, resize set 18 52, border none, move position center, move y 0px
321# Qjackctl
322for_window [app_id="qjackctl"] floating enable
323# Weather Window
324for_window [app_id="ala-wttr"] border none, floating enable, resize set 740 712
325include /etc/sway/config.d/*