diff options
Diffstat (limited to 'users/ryan/linux/hypr/hyprland.conf')
| -rw-r--r-- | users/ryan/linux/hypr/hyprland.conf | 336 |
1 files changed, 336 insertions, 0 deletions
diff --git a/users/ryan/linux/hypr/hyprland.conf b/users/ryan/linux/hypr/hyprland.conf new file mode 100644 index 0000000..e51b54c --- /dev/null +++ b/users/ryan/linux/hypr/hyprland.conf | |||
| @@ -0,0 +1,336 @@ | |||
| 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, ^(kitty)$ | ||
| 134 | # Example windowrule v2 | ||
| 135 | # windowrulev2 = float,class:^(kitty)$,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 | windowrulev2 = float, class:^(zen-beta)$, title:^(Picture-in-Picture)$ | ||
| 256 | windowrulev2 = pin, class:^(zen-beta)$, title:^(Picture-in-Picture)$ | ||
| 257 | windowrulev2 = size 22% 22%, class:^(zen-beta)$, title:^(Picture-in-Picture)$ | ||
| 258 | windowrulev2 = move 76% 8%, class:^(zen-beta)$, title:^(Picture-in-Picture)$ | ||
| 259 | |||
| 260 | # Firefox Sharing Indicator | ||
| 261 | windowrulev2 = float, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$ | ||
| 262 | windowrulev2 = size 56 31, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$ | ||
| 263 | windowrulev2 = move 50% 0, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$ | ||
| 264 | windowrulev2 = suppressevent fullscreen maximize, class:^(firefox)$, title:^(Firefox — Sharing Indicator)$ | ||
| 265 | |||
| 266 | # Weather | ||
| 267 | windowrulev2 = float,class:^(ala-wttr)$ | ||
| 268 | windowrulev2 = size 822 1026, class:^(ala-wttr)$ | ||
| 269 | |||
| 270 | # Floating terminal | ||
| 271 | windowrulev2 = float,class:^(float-foot)$ | ||
| 272 | windowrulev2 = size 930 680,class:^(float-foot)$ | ||
| 273 | windowrulev2 = center,class:^(float-foot)$ | ||
| 274 | |||
| 275 | # Change color of pinned windows | ||
| 276 | windowrulev2 = bordercolor rgba(bf0000ee) rgba(ab00adee) 45deg,pinned:1 | ||
| 277 | |||
| 278 | # Fun Keybinds | ||
| 279 | # Subway surfer | ||
| 280 | bind = $mainMod CTRL SHIFT, S, exec, mpv ~/.config/hypr/subwaysurfer.webm | ||
| 281 | windowrulev2 = float,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$ | ||
| 282 | windowrulev2 = size 310 554,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$ | ||
| 283 | windowrulev2 = move 81% 46% ,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$ | ||
| 284 | windowrulev2 = pin,class:^(mpv)$, title:^(subwaysurfer.webm - mpv)$ | ||
| 285 | |||
| 286 | # Family guy funny moments | ||
| 287 | bind = $mainMod CTRL SHIFT, F, exec, mpv ~/.config/hypr/family_guy.mp4 | ||
| 288 | windowrulev2 = float,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$ | ||
| 289 | windowrulev2 = size 595 336,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$ | ||
| 290 | windowrulev2 = move 67% 5% ,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$ | ||
| 291 | windowrulev2 = pin,class:^(mpv)$, title:^(family_guy.mp4 - mpv)$ | ||
| 292 | |||
| 293 | # Satty windowrules | ||
| 294 | windowrulev2 = fullscreen,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 | } | ||
