users/ryan/linux/hypr/hyprland.conf

397af8b5b8bf6d08f26292207ce2aaffc095772b · 10.5 KB · 336 lines raw

1 exec-once = dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=Hyprland
2
3 #
4 # Please note not all available settings / options are set here.
5 # For a full list, see the wiki
6 #
7
8 # See https://wiki.hyprland.org/Configuring/Monitors/
9 monitor=,preferred,auto,1
10
11 # Cursor theme is set via home.pointerCursor in linux.nix (pkgs.bibata-cursors,
12 # theme "Bibata-Modern-Classic"). The old vendored theme used
13 # hyprcursor/daed9-versioned names that only existed in the manually-packaged
14 # asset; nixpkgs' build uses the plain name below for both HYPRCURSOR_THEME
15 # and XCURSOR_THEME.
16 env = HYPRCURSOR_THEME,Bibata-Modern-Classic
17 env = HYPRCURSOR_SIZE,24
18 env = XCURSOR_THEME,Bibata-Modern-Classic
19 env = XCURSOR_SIZE,24
20
21 env = AQ_NO_MODIFIERS,1
22
23 render {
24 expand_undersized_textures = false
25 }
26
27 ecosystem {
28 no_update_news = true
29 }
30
31
32 # See https://wiki.hyprland.org/Configuring/Keywords/ for more
33
34 # Execute your favorite apps at launch
35 # exec-once = waybar & hyprpaper & firefox
36
37 # Source a file (multi-file configs)
38 source = ~/.config/hypr/monitors.conf
39
40 # Some default env vars.
41 env = XCURSOR_SIZE,24
42
43 debug {
44 disable_logs = false
45 enable_stdout_logs = true
46 }
47
48 # For all categories, see https://wiki.hyprland.org/Configuring/Variables/
49 input {
50 kb_layout = us
51 kb_variant =
52 kb_model =
53 kb_options =
54 kb_rules =
55 numlock_by_default = true
56
57 follow_mouse = 1
58
59 touchpad {
60 natural_scroll = no
61 middle_button_emulation = true
62 clickfinger_behavior = true
63 }
64
65 sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
66 }
67
68 general {
69 # See https://wiki.hyprland.org/Configuring/Variables/ for more
70
71 gaps_in = 5
72 gaps_out = 10
73 border_size = 2
74 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
75 col.inactive_border = rgba(595959aa)
76
77 layout = dwindle
78 }
79
80 decoration {
81 # See https://wiki.hyprland.org/Configuring/Variables/ for more
82
83 rounding = 5
84 blur {
85 enabled = yes
86 size = 3
87 passes = 1
88 new_optimizations = on
89 }
90
91 shadow {
92 enabled = true
93 range = 4
94 render_power = 3
95 color = rgba(1a1a1aee)
96 }
97 }
98
99 animations {
100 enabled = yes
101
102 # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
103
104 bezier = myBezier, 0.05, 0.9, 0.1, 1.05
105
106 animation = windows, 1, 7, myBezier
107 animation = windowsOut, 1, 7, default, popin 80%
108 animation = border, 1, 10, default
109 animation = borderangle, 1, 8, default
110 animation = fade, 1, 7, default
111 animation = workspaces, 1, 6, default
112 }
113
114 dwindle {
115 # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
116 #pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
117 preserve_split = yes # you probably want this
118 }
119
120 #master {
121 # # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
122 # new_is_master = true
123 #}
124
125 # Example per-device config
126 # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
127 device {
128 name = epic-mouse-v1
129 sensitivity = -0.5
130 }
131
132 # Example windowrule v1
133 # windowrule = float on, ^(kitty)$
134 # Example windowrule v2
135 # windowrulev2 = float on,match:class ^(kitty)$,match:title ^(kitty)$
136 # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
137
138
139 # See https://wiki.hyprland.org/Configuring/Keywords/ for more
140 $mainMod = SUPER
141
142 # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
143 bind = $mainMod, Return, exec, foot
144 bind = $mainMod CTRL, Return, exec, foot -a float-foot
145 bind = $mainMod SHIFT, Q, killactive
146 bind = $mainMod SHIFT, E, exit
147 bind = $mainMod SHIFT, Space, togglefloating
148 bind = $mainMod SHIFT, Return, pin, active
149 bind = $mainMod, D, exec, fuzzel --width=35 --font='Hack:weight=bold:size=12' --background-color='282a36fa' --selection-color='3d4460fa' --line-height=20 --border-radius=20
150 #bind = $mainMod, P, pseudo, # dwindle
151 #bind = $mainMod, J, togglesplit, # dwindle
152 bind = $mainMod, F, fullscreen, 1
153 bind = $mainMod SHIFT, F, fullscreen
154 bind = ,XF86MonBrightnessUp, exec, light -A 10
155 bind = ,XF86MonBrightnessDown, exec, light -U 10
156 bind = ,XF86AudioRaiseVolume, exec, pamixer -i 5
157 bind = ,XF86AudioLowerVolume, exec, pamixer -d 5
158 bind = ,XF86AudioMute, exec, pamixer -t
159 bind = ,XF86AudioPlay, exec, playerctl play-pause
160 bind = ,XF86AudioPause, exec, playerctl play-pause
161 bind = ,XF86AudioNext, exec, playerctl next
162 bind = ,XF86AudioPrev, exec, playerctl previous
163 bind = ,XF86AudioStop, exec, playerctl stop
164
165 # "Auto-connect headphones"
166 bind = $mainMod, H, exec, bluetoothctl connect AC:80:0A:1C:D6:C7
167
168 # Move workspace between monitors
169 bind = $mainMod CTRL SHIFT, left, movecurrentworkspacetomonitor, l
170 bind = $mainMod CTRL SHIFT, right, movecurrentworkspacetomonitor, r
171 bind = $mainMod CTRL SHIFT, up, movecurrentworkspacetomonitor, u
172 bind = $mainMod CTRL SHIFT, down, movecurrentworkspacetomonitor, d
173
174 # Move focus with mainMod + arrow keys
175 bind = $mainMod, left, movefocus, l
176 bind = $mainMod, right, movefocus, r
177 bind = $mainMod, up, movefocus, u
178 bind = $mainMod, down, movefocus, d
179
180 # Move window with mainMod + SHIFT + arrow keys
181 bind = $mainMod SHIFT, left, movewindow, l
182 bind = $mainMod SHIFT, right, movewindow, r
183 bind = $mainMod SHIFT, up, movewindow, u
184 bind = $mainMod SHIFT, down, movewindow, d
185
186 # Switch workspaces with mainMod + [0-9]
187 bind = $mainMod, 1, workspace, 1
188 bind = $mainMod, 2, workspace, 2
189 bind = $mainMod, 3, workspace, 3
190 bind = $mainMod, 4, workspace, 4
191 bind = $mainMod, 5, workspace, 5
192 bind = $mainMod, 6, workspace, 6
193 bind = $mainMod, 7, workspace, 7
194 bind = $mainMod, 8, workspace, 8
195 bind = $mainMod, 9, workspace, 9
196 bind = $mainMod, 0, workspace, 10
197
198 # Move active window to a workspace with mainMod + SHIFT + [0-9]
199 bind = $mainMod SHIFT, 1, movetoworkspace, 1
200 bind = $mainMod SHIFT, 2, movetoworkspace, 2
201 bind = $mainMod SHIFT, 3, movetoworkspace, 3
202 bind = $mainMod SHIFT, 4, movetoworkspace, 4
203 bind = $mainMod SHIFT, 5, movetoworkspace, 5
204 bind = $mainMod SHIFT, 6, movetoworkspace, 6
205 bind = $mainMod SHIFT, 7, movetoworkspace, 7
206 bind = $mainMod SHIFT, 8, movetoworkspace, 8
207 bind = $mainMod SHIFT, 9, movetoworkspace, 9
208 bind = $mainMod SHIFT, 0, movetoworkspace, 10
209
210 # Scroll through existing workspaces with mainMod + scroll
211 bind = $mainMod, mouse_down, workspace, e+1
212 bind = $mainMod, mouse_up, workspace, e-1
213
214 # Move/resize windows with mainMod + LMB/RMB and dragging
215 bindm = $mainMod, mouse:272, movewindow
216 bindm = $mainMod, mouse:273, resizewindow
217
218 # Bind mainMod + L to screenlocker
219 bind = $mainMod, L, exec, hyprlock
220 bind = $mainMod SHIFT, L, exec, loginctl suspend
221
222 # Keybind to toggle "performance mode" (toggles GPU intensive things)
223 bind = $mainMod, F1, exec, ~/.config/hypr/scripts/perf_mode.sh
224
225 bind = $mainMod SHIFT, Z, exec, pypr zoom
226
227 # Keybind for screenshot (satty)
228 bind = $mainMod SHIFT, S, exec, grimblast save output - | satty --fullscreen --copy-command 'wl-copy' --filename -
229 bind = $mainMod, S, exec, grimblast copy area
230 bind = $mainMod, Print, exec, export TEMP=$(mktemp) && grimblast copy area && wl-paste > $TEMP && imv $TEMP && rm $TEMP
231
232 # Keybind for screenshot (old)
233 # bind = $mainMod SHIFT, S, exec, grimblast copy area
234 # bind = $mainMod SHIFT, Print, exec, grimblast edit area
235 # bind = $mainMod, S, exec, imv <(grimblast save area -)
236
237 # Keybind for screenshot (flameshot)
238 #bind = $mainMod SHIFT, S, exec, flameshot gui --raw | wl-copy
239 #bind = $mainMod SHIFT CTRL, S, exec, flameshot gui --raw -d $(( 1000 * $(fuzzel -l0 --dmenu -p"Delay> ") )) | wl-copy
240 #bind = $mainMod, S, exec, flameshot gui
241
242 # Notifications keybinds
243 bind = $mainMod, N, exec, makoctl dismiss
244 bind = $mainMod SHIFT, N, exec, makoctl dismiss -a
245
246 # Color picker
247 bind = $mainMod SHIFT, C, exec, hyprpicker -a
248
249 # LinkedIn Joke (very serious)
250 bind = $mainMod SHIFT CTRL ALT, L, exec, xdg-open https://linkedin.com
251
252 # Window Rules
253
254 # Firefox PiP
255 windowrule = float on, match:class ^(zen-beta)$, match:title ^(Picture-in-Picture)$
256 windowrule = pin on, match:class ^(zen-beta)$, match:title ^(Picture-in-Picture)$
257 windowrule = size 22% 22%, match:class ^(zen-beta)$, match:title ^(Picture-in-Picture)$
258 windowrule = move 76% 8%, match:class ^(zen-beta)$, match:title ^(Picture-in-Picture)$
259
260 # Firefox Sharing Indicator
261 windowrule = float on, match:class ^(firefox)$, match:title ^(Firefox — Sharing Indicator)$
262 windowrule = size 56 31, match:class ^(firefox)$, match:title ^(Firefox — Sharing Indicator)$
263 windowrule = move 50% 0, match:class ^(firefox)$, match:title ^(Firefox — Sharing Indicator)$
264 windowrule = suppress_event = fullscreen maximize, match:class ^(firefox)$, match:title ^(Firefox — Sharing Indicator)$
265
266 # Weather
267 windowrule = float on,match:class ^(ala-wttr)$
268 windowrule = size 822 1026, match:class ^(ala-wttr)$
269
270 # Floating terminal
271 windowrule = float on,match:class ^(float-foot)$
272 windowrule = size 930 680,match:class ^(float-foot)$
273 windowrule = center on,match:class ^(float-foot)$
274
275 # Change color of pinned windows
276 windowrule = border_color rgba(bf0000ee) rgba(ab00adee) 45deg,match:pin 1
277
278 # Fun Keybinds
279 # Subway surfer
280 bind = $mainMod CTRL SHIFT, S, exec, mpv ~/.config/hypr/subwaysurfer.webm
281 windowrule = float on,match:class ^(mpv)$, match:title ^(subwaysurfer.webm - mpv)$
282 windowrule = size 310 554,match:class ^(mpv)$, match:title ^(subwaysurfer.webm - mpv)$
283 windowrule = move 81% 46% ,match:class ^(mpv)$, match:title ^(subwaysurfer.webm - mpv)$
284 windowrule = pin on,match:class ^(mpv)$, match:title ^(subwaysurfer.webm - mpv)$
285
286 # Family guy funny moments
287 bind = $mainMod CTRL SHIFT, F, exec, mpv ~/.config/hypr/family_guy.mp4
288 windowrule = float on,match:class ^(mpv)$, match:title ^(family_guy.mp4 - mpv)$
289 windowrule = size 595 336,match:class ^(mpv)$, match:title ^(family_guy.mp4 - mpv)$
290 windowrule = move 67% 5% ,match:class ^(mpv)$, match:title ^(family_guy.mp4 - mpv)$
291 windowrule = pin on,match:class ^(mpv)$, match:title ^(family_guy.mp4 - mpv)$
292
293 # Satty windowrules
294 windowrule = fullscreen on,match:class ^(com.gabm.satty)$
295
296 exec-once = ~/.config/hypr/scripts/autostart.sh
297
298 misc {
299 disable_hyprland_logo = true
300 force_default_wallpaper = 0
301 }
302
303 # Cursors!
304 plugin:dynamic-cursors {
305 enabled = true
306 mode = tilt
307 threshold = 2
308 tilt {
309 limit = 5000
310 function = negative_quadratic
311 }
312
313 shake {
314 enabled = true
315 nearest = true
316 threshold = 6.0
317 base = 4.0
318 speed = 4.0
319 influence = 0.0
320
321 limit = 0.0
322
323 timeout = 2000
324
325 effects = true
326
327 ipc = false
328 }
329
330 hyprcursor {
331 nearest = true
332 enabled = true
333 resolution = -1
334 fallback = clientside
335 }
336 }