diff --git a/.gitignore b/.gitignore index 240e410..6ab439b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -nvim/lazylock.json +nvim/lazy-lock.json +hypr/hardware.conf diff --git a/hypr/hyprbinds.conf b/hypr/hyprbinds.conf new file mode 100644 index 0000000..ce1dbc6 --- /dev/null +++ b/hypr/hyprbinds.conf @@ -0,0 +1,96 @@ +# Window management +bind = SUPER_L, Q, killactive, +bind = SUPER_L, M, togglefloating, +bind = SUPER_L, M, centerwindow +bindr = SUPER, SUPER_L, exec, ~/.config/scripts/wofi-launch.sh +bind = SUPER_L, B, togglesplit + +# Screen locking +bindl = SUPER_L, ESCAPE, exec, ~/.config/scripts/lock.sh +bind = , XF86Go, exec, ~/.config/scripts/idle-toggle.sh +bindl= ,switch:on:Lid Switch, exec, pgrep hyprlock || hyprlock & systemctl suspend + +$select = winsel + +# Move focus with mainMod + arrow keys +bind = SUPER_L, A, exec, $select 0 +bind = SUPER_L, O, exec, $select 1 +bind = SUPER_L, E, exec, $select 2 +bind = SUPER_L, U, exec, $select 3 + +# Move windows around with mainMod + arrow keys +bind = SUPER_L, H, movewindow, l +bind = SUPER_L, T, movewindow, u +bind = SUPER_L, N, movewindow, d +bind = SUPER_L, S, movewindow, r + +# Navigate multiple monitors +bind = SUPER_L, PERIOD, focusmonitor, -1 +bind = SUPER_L, P, movecurrentworkspacetomonitor, -1 + +# Switch workspaces with mainMod + [0-9] +bind = SUPER_L, 1, workspace, 1 +bind = SUPER_L, 2, workspace, 2 +bind = SUPER_L, 3, workspace, 3 +bind = SUPER_L, 4, workspace, 4 +bind = SUPER_L, 5, workspace, 5 +bind = SUPER_L, 6, workspace, 6 +bind = SUPER_L, 7, workspace, 7 +bind = SUPER_L, 8, workspace, 8 +bind = SUPER_L, 9, workspace, 9 +bind = SUPER_L, 0, exec, hyprctl activewindow | workspace0 +bind = SUPER, apostrophe, hyprexpo:expo, toggle + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = SUPER_L SHIFT, 1, movetoworkspace, 1 +bind = SUPER_L SHIFT, 2, movetoworkspace, 2 +bind = SUPER_L SHIFT, 3, movetoworkspace, 3 +bind = SUPER_L SHIFT, 4, movetoworkspace, 4 +bind = SUPER_L SHIFT, 5, movetoworkspace, 5 +bind = SUPER_L SHIFT, 6, movetoworkspace, 6 +bind = SUPER_L SHIFT, 7, movetoworkspace, 7 +bind = SUPER_L SHIFT, 8, movetoworkspace, 8 +bind = SUPER_L SHIFT, 9, movetoworkspace, 9 +bind = SUPER_L SHIFT, 0, movetoworkspace, 10 + +# Manage special workspace (scratchpad) +bind = SUPER_L, V, togglespecialworkspace +bind = SUPER_L, Z, movetoworkspacesilent, special +bind = SUPER_L, W, movewindow, mon:current + +# Move/resize windows +bindm = SUPER_L, mouse:272, movewindow +bindm = SUPER_L, mouse:273, resizewindow +bind = SUPER_L, SPACE, fullscreen + +# Resize windows with super + arrow keys +bind = SUPER_L ALT, h, resizeactive, -50 0 +bind = SUPER_L ALT, t, resizeactive, 0 -50 +bind = SUPER_L ALT, n, resizeactive, 0 50 +bind = SUPER_L ALT, s, resizeactive, 50 0 + +# Open favourites +bind = SUPER_L, G, exec, zen-browser +bind = SUPER_L, C, exec, spotify-launcher +bind = SUPER_L, R, exec, secrets +bind = SUPER_L, L, exec, kitty + +# Adjust brightness +bindle = , XF86MonBrightnessUp, exec, brillo -A 8% -q -u 500000 +bindle = , XF86MonBrightnessDown, exec, brillo -U 8% -q -u 500000 +bindle = SHIFT, XF86MonBrightnessDown, exec, brillo -S 0% -q -u 1000000 +bind = , Cancel, exec, ~/.config/scripts/sunset-toggle.sh + +# Adjust volume and media +bindle = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% +bindle = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% +bind = , XF86AudioMicMute, exec, playerctl next +bind = , XF86AudioMute, exec, playerctl play-pause + +# Screen capturing +bind = SUPER_L, COMMA, exec, pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m region +bind = SUPER_L ALT, COMMA, exec, pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m window +bind = SUPER_L SHIFT, COMMA, exec, pgrep slurp || hyprshot -o ~/Pictures/Screenshots -z -s -m active -m output +bind = SUPER_L, SEMICOLON, exec, ~/.config/scripts/zoom.sh +bind = , XF86Display, exec, ~/.config/scripts/vnc-toggle.sh +bind = SHIFT, XF86Display, exec, killall gjs && ags run diff --git a/hypr/hyprcolors.conf b/hypr/hyprcolors.conf new file mode 100644 index 0000000..d160c6f --- /dev/null +++ b/hypr/hyprcolors.conf @@ -0,0 +1,3 @@ +$primary = rgba(D89FD6ff) +$primary_container = rgba(4E2A79ff) +$background = rgba(090012ff) diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf new file mode 100644 index 0000000..64920eb --- /dev/null +++ b/hypr/hypridle.conf @@ -0,0 +1,8 @@ +listener { + timeout = 100 + on-timeout = notify-send -a 'Hummingbird' 'Hypridle' 'Suspending in 5 seconds...' -i gnome-suspend -t 1 +} +listener { + timeout = 105 + on-timeout = ~/.config/scripts/lock.sh +} diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..05129b3 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,181 @@ +source = ~/.config/hypr/hardware.conf +source = ~/.config/hypr/monitors.conf +source = ~/.config/hypr/hyprcolors.conf +monitor = , preferred, auto, 1.0 +monitor = , addreserved, 36, 0, 0, 0 + +# Run stuff on launch +env = PATH, $PATH:$HOME/.local/bin:$HOME/.cargo/bin +exec-once = hyprlock +exec-once = hypridle +exec-once = nextcloud +exec-once = /lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = keyd-application-mapper -d +exec-once = ags run +exec-once = hyprpm reload +exec-once = tradjust +exec-once = swww-daemon + +# Theming with envvars for some reason +env = XCURSOR_SIZE, 22 +env = XCURSOR_THEME, GoogleDot-Black +env = HYPRCURSOR_SIZE, 22 +env = HYPRCURSOR_THEME, GoogleDot-Hypr + +envd = GTK_THEME, catppuccin-mocha-blue-standard+default +env = GTK_ICON_THEME, BeautyLine + +envd = QT_QUICK_CONTROLS_STYLE=org.hyprland.style +envd = QT_QPA_PLATFORMTHEME,qt6ct +# envd = QT_STYLE_OVERRIDE,kvantum +env = QT_QPA_PLATFORM,wayland;xcb + +env = FREETYPE_PROPERTIES,cff:no-stem-darkening=0 autofitter:no-stem-darkening=0 + +# Mouse and keyboard settings +input { + kb_layout = us + kb_variant = dvorak + repeat_delay = 600 + touchpad { + natural_scroll = true + } +} + +# Disable the trackpad in favour of thinkpad nub + +general { + gaps_in = 3 + gaps_out = 6 + col.active_border = $primary + col.inactive_border = $primary_container + border_size = 2 + + layout = dwindle + no_focus_fallback = true +} + +decoration { + rounding = 10 +# active_opacity = 0.9 +# inactive_opacity = 0.92 +# fullscreen_opacity = 1.0 + blur { + enabled = true + size = 6 + passes = 3 + new_optimizations = true + ignore_opacity = true + special = true + brightness = 1 + xray = false; + } +} + +workspace = special:special, gapsin:32, gapsout:64 + +animations { + enabled = yes + + bezier = default , 0.16, 1 , 0.30, 1 + bezier = easeOut , 0.22, 1 , 0.36, 1 + bezier = easeIn , 0.64, 0 , 0.78, 0 + + animation = fadeIn , 1, 4, default + animation = fadeOut , 1, 3, default + animation = windowsIn , 1, 4, default, popin 85% + animation = windowsOut , 1, 4, default, popin 85% + animation = windowsMove , 1, 3, easeOut + animation = border , 1, 5, default + animation = layersIn , 1, 3, easeOut, slide + animation = layersOut , 1, 2, easeIn, slide + animation = fadeLayersIn , 1, 3, easeOut + animation = fadeLayersOut , 1, 2, easeIn + animation = workspaces , 1, 3, easeOut, slide + animation = specialWorkspace , 1, 4, default, slidevert + animation = zoomFactor , 1, 3, default +} + + + +dwindle { + preserve_split = true + smart_split = false + use_active_for_splits = true + force_split = 2 +} + +plugin { + hyprexpo { + columns = 3 + gap_size = 5 + bg_col = rgb(111111) + workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1 + + enable_gesture = true # laptop touchpad + gesture_fingers = 3 # 3 or 4 + gesture_distance = 300 # how far is the "max" + gesture_positive = true # positive = swipe down. Negative = swipe up. + } + #dynamic-cursors { + # enabled = true + # mode = stretch + # stretch { + # limit = 3000 + # function = linear + # } + #} +} + +# Smart gaps +workspace = w[tv1] s[false], gapsout:0, gapsin:0 +workspace = s[true], gapsout:64, gapsin:32 +windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] +windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] s[false] + +# The bell doesn't fullscreen you, I do. +windowrulev2 = suppressevent fullscreen, class:.* + +# Misc window rules +windowrulev2 = float, title:(Write:) +windowrulev2 = float, class:(xdg-desktop-portal-gtk) +windowrulev2 = noblur, title:(File Upload) +windowrulev2 = noblur, title:(Open File) +windowrulev2 = float, center, class:(eog) +windowrulev2 = fullscreen, class:steam_app* + +# Misc layer rules +layerrule = animation slide, .*bar.* +layerrule = blur, logout_dialog +layerrule = animation fade, logout_dialog +layerrule = animation fade, selection +layerrule = animation fade, hyprpicker + +layerrule = animation popin 40%, lazerpopup +layerrule = noanim, notification +layerrule = dimaround, notifpanel +layerrule = order 1, bar +layerrule = order 2, lazerpopup +layerrule = order 3, notifpanel +layerrule = order 4, notification + +source = ~/.config/hypr/hyprbinds.conf + +misc { + disable_hyprland_logo = true + animate_manual_resizes = true + disable_splash_rendering = false + new_window_takes_over_fullscreen = 2 + key_press_enables_dpms = true + focus_on_activate = true + session_lock_xray = true + animate_manual_resizes = true +} + +cursor { + persistent_warps = true +} + +xwayland { + force_zero_scaling = true +} diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf new file mode 100644 index 0000000..b72d028 --- /dev/null +++ b/hypr/hyprlock.conf @@ -0,0 +1,105 @@ +source = ~/.config/hypr/hyprcolors.conf + +general { + hide_cursor = true + immediate_render = true +} + +auth { + pam { + enabled = true + } + fingerprint { + enabled = true + } +} + +animations { + bezier = default, 0.16, 1, 0.30, 1 + + animation = fadeIn, 1, 5, default + animation = fadeOut, 1, 3, default + animation = inputField, 1, 3, default +} + +background { + monitor = + path = screenshot + color = rgba(181825aa) + blur_strength = 10 + blur_passes = 3 + brightness = 0.8 + contrast = 0.8 +} + +shape { + monitor = eDP-1 + size = 350, 200 + color = $background + border_color = $primary + border_size = 4 + rounding = 20 + + halign = center + valign = center + position = 0, 0 + + shadow_color = rgb(000000) + shadow_size = 2 + shadow_passes = 4 + shadow_boost = 0.6 +} + +image { + path = ~/.face + + monitor = eDP-1 + size = 100 + border_color = $primary + border_size = 4 + rounding = -1 + + halign = center + valign = center + position = 0, 100 +} + +input-field { + monitor = eDP-1 + size = 310, 50 + outline_thickness = 4 + dots_size = 0.25 + dots_spacing = 0.2 + dots_center = true + inner_color = rgb(1e1e2e) + outer_color = rgb(313244) + font_color = rgb(cdd6f4) + font_size = 16 + hide_input = false + rounding = 8 + check_color = rgb(f9e2af) + fail_color = rgb(f38ba8) + fail_text = Do better. + fail_timeout = 1000 + fail_transition = 200 + fade_on_empty = false + font_family = sriracha + placeholder_text = + + position = 0, -50 + halign = center + valign = center +} + +label { + monitor = eDP-1 + text = o shit waddup! + text_align = center + color = rgb(cdd6f4) + font_size = 24 + font_family = sriracha + + position = 0, 15 + halign = center + valign = center +} diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf new file mode 100644 index 0000000..4489033 --- /dev/null +++ b/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload=~/Pictures/Wallpapers/scarletTree.png +wallpaper = , ~/Pictures/Wallpapers/scarletTree.png diff --git a/hypr/monitors.conf b/hypr/monitors.conf new file mode 100644 index 0000000..fe83fc4 --- /dev/null +++ b/hypr/monitors.conf @@ -0,0 +1,4 @@ +# Generated by nwg-displays on 2025-07-22 at 15:25:56. Do not edit manually. + +monitor=eDP-1,1920x1200@60.0,0x1120,1.0 +monitor=HDMI-A-1,1920x1080@60.0,0x0,1.0 diff --git a/kitty/colors.conf b/kitty/colors.conf new file mode 100644 index 0000000..ed1933e --- /dev/null +++ b/kitty/colors.conf @@ -0,0 +1,28 @@ +# foreground #F7E0D7 +background #090012 +# +# active_tab_foreground #090012 +# active_tab_background #F7E0D7 +# inactive_tab_foreground #F7E0D7 +# inactive_tab_background #090012 +# +# active_border_color #F7E0D7 +# inactive_border_color #090012 +# bell_border_color #4E2A79 +# +# color0 #090012 +# color8 #A48E84 +# color1 #4E2A79 +# color9 #4E2A79 +# color2 #8E223D +# color10 #8E223D +# color3 #9661BB +# color11 #9661BB +# color4 #CC6268 +# color12 #CC6268 +# color5 #D89FD6 +# color13 #D89FD6 +# color6 #E7A78C +# color14 #E7A78C +# color7 #EBCBBD +# color15 #EBCBBD diff --git a/kitty/kitty.conf b/kitty/kitty.conf new file mode 100644 index 0000000..6e26e6b --- /dev/null +++ b/kitty/kitty.conf @@ -0,0 +1,15 @@ +include colors.conf + +background_opacity 0.75 + +font_family ComicShannsMono Nerd Font +font_size 16 + +cursor #cdf +cursor_trail 1 +cursor_trail_start_threshold 0 +cursor_trail_decay 0 0.3 +window_padding_width 4 + +confirm_os_window_close 0 +enable_audio_bell no diff --git a/nvim/init.lua b/nvim/init.lua index 3cdca30..3baa857 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -1,16 +1,16 @@ require('config.lazy') vim.lsp.enable({ - rust_analyzer, - jdtls, - qmlls, - clangd, - csharp_ls, - lua_ls, - html, - ts_ls, - css_ls, - tinymist, + "rust_analyzer", + "jdtls", + "qmlls", + "clangd", + "csharp_ls", + "lua_ls", + "html", + "ts_ls", + "css_ls", + "tinymist" })