commit 1382e8a21398086ed821249aba8110a98993182d Author: voidarc Date: Tue May 12 10:38:35 2026 +0100 initial diff --git a/animations.conf b/animations.conf new file mode 100644 index 0000000..cdc05bd --- /dev/null +++ b/animations.conf @@ -0,0 +1,19 @@ +animations { + enabled = true + + bezier = heavyOvershoot, 0.53, 0.51, 0.3, 1.22 + bezier = lightOvershoot, 0.33, 0.61, 0.63, 1.19 + bezier = smoothSnap, 0.32, 0.51, 0.44, 1 + bezier = smoothIn, 0.25, 1, 0.5, 1 + bezier = smoothOutOvershoot, 0.46, -0.25, 0.81, 0.51 + + animation = workspaces, 1, 2.5, heavyOvershoot, slidefade 30% + animation = specialWorkspace, 1, 2, smoothIn, slidefadevert -80% + animation = specialWorkspaceOut, 1, 1.7, smoothOutOvershoot, slidefadevert -80% + + animation = windows, 1, 2, smoothIn, slide right + animation = windowsMove, 1, 2, smoothSnap + animation = windowsOut, 1, 4, heavyOvershoot, popin 30% + + animation = fade, 1, 2, smoothIn +} diff --git a/binds.conf b/binds.conf new file mode 100644 index 0000000..dc3c9c2 --- /dev/null +++ b/binds.conf @@ -0,0 +1,58 @@ +# Script Path +$scrPath = ~/.config/scripts + +# Assign apps +$term = kitty +$file = nemo +$browser = firefox +$launcher = $scrPath/otter-launch.sh + +# Window/Session actions +bind = $mainMod, backspace, exec, $scrPath/dontkillsteam.sh # close focused window +bind = $mainMod, d, exec, $launcher + +# Super key to drag windows +binds { + drag_threshold = 10 + scroll_event_delay = 0 +} +bindm = $submod, mouse:272, movewindow +bindr = $submod, mouse:272, layoutmsg, promote +bindc = $submod, mouse:272, togglefloating + +# Resize floating window with scrollwheels +bind = $submod, mouse_down, resizeactive, 0 -30 +bind = $submod, mouse_up, resizeactive, 0 30 +bind = $submod, mouse_left, resizeactive, 30 0 +bind = $submod, mouse_right, resizeactive, -30 0 +bind = $submod, space, togglefloating, # toggle the window between focus and float + +# Screenshot/Screencapture +bind = Super+SHIFT, S, exec, grimblast copy area + +# Move/Change window focus +bind = $mainMod, h, layoutmsg, focus l +bind = $mainMod, l, layoutmsg, focus r +bind = $mainMod, k, movefocus, u +bind = $mainMod, j, movefocus, d + +# Resize floating windows with keyboard +bind = $submod ctrl, h, resizeactive, -50 0 +bind = $submod ctrl, l, resizeactive, 50 0 +bind = $submod ctrl, k, resizeactive, 0 50 +bind = $submod ctrl, j, resizeactive, 0 -50 + +# Change window positions with keyboard +bind = $mainMod SHIFT, H, swapwindow, l +bind = $mainMod SHIFT, L, swapwindow, r +bind = $mainMod SHIFT, K, swapwindow, u +bind = $mainMod SHIFT, J, swapwindow, d + +# Move/Switch to special workspace (scratchpad) +bind = $mainMod, MINUS, togglespecialworkspace, scratch +bind = $mainMod SHIFT, MINUS, movetoworkspacesilent, special:scratch + +# Music workspace +bind = $mainMod, m, togglespecialworkspace, music + +source = ~/.config/hypr/binds-local.conf diff --git a/cat.png b/cat.png new file mode 100644 index 0000000..deb6a04 Binary files /dev/null and b/cat.png differ diff --git a/hyprland.conf b/hyprland.conf new file mode 100644 index 0000000..66450e0 --- /dev/null +++ b/hyprland.conf @@ -0,0 +1,8 @@ +source = ~/.config/hypr/rules.conf +source = ~/.config/hypr/local.conf +source = ~/.config/hypr/binds.conf +source = ~/.config/hypr/style.conf +source = ~/.config/hypr/animations.conf +source = ~/.config/hypr/input.conf +source = ~/.config/hypr/windows.conf +source = ~/.config/hypr/startup.conf diff --git a/hyprlock.conf b/hyprlock.conf new file mode 100644 index 0000000..a2d0ea5 --- /dev/null +++ b/hyprlock.conf @@ -0,0 +1,109 @@ +source = $HOME/.config/hypr/mocha.conf + +$accent = $mauve +$accentAlpha = $mauveAlpha +$font = JetBrainsMono Nerd Font + +# GENERAL +general { + hide_cursor = true +} + +# BACKGROUND +background { + monitor = + path = $HOME/.config/background + blur_passes = 0 + color = $base +} + + +# LAYOUT +label { + monitor = + text = Layout: $LAYOUT + color = $text + font_size = 25 + font_family = $font + position = 30, -30 + halign = left + valign = top +} + +# TIME +label { + monitor = + text = $TIME + color = $text + font_size = 90 + font_family = $font + position = -30, 0 + halign = right + valign = top +} + +# DATE +label { + monitor = + text = cmd[update:43200000] date +"%A, %d %B %Y" + color = $text + font_size = 25 + font_family = $font + position = -30, -150 + halign = right + valign = top +} + +# FINGERPRINT +{ + monitor = ""; + text = "$FPRINTPROMPT"; + color = "$text"; + font_size = 14; + font_family = $font; + position = "0, -107"; + halign = "center"; + valign = "center"; +} + +image { + path = $HOME/.config/hypr/cat.png + size = 240 + border_color = transparent + rounding = 0 + position = 0, 7px +} + +# USER AVATAR +image { + monitor = + path = $HOME/.face + size = 100 + border_color = $accent + position = 0, 75 + halign = center + valign = center +} + +# INPUT FIELD +input-field { + monitor = + size = 300, 60 + outline_thickness = 4 + dots_size = 0.2 + dots_spacing = 0.2 + dots_center = true + outer_color = $accent + inner_color = $surface0 + font_color = $text + fade_on_empty = false + placeholder_text = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + capslock_color = $yellow + position = 0, -47 + halign = center + valign = center +} diff --git a/input.conf b/input.conf new file mode 100644 index 0000000..6a18fbe --- /dev/null +++ b/input.conf @@ -0,0 +1,38 @@ +input { + kb_layout = gb + follow_mouse = 1 + + touchpad { + natural_scroll = true + disable_while_typing = true + } + + sensitivity = -0.3 + force_no_accel = false + tablet { + left_handed = true + output = current + } +} + +cursor { + inactive_timeout = 2 + warp_on_change_workspace = 1 + hide_on_key_press = true + warp_on_toggle_special = 1 +} + +device { + name = 2.4g-wireless-optical-mouse--mouse + sensitivity = -0.65 + accel_profile = adaptive +} + +device { + name = wacom-bamboo-16fg-4x5-finger + flip_x = true + flip_y = true + natural_scroll = false + sensitivity = 0.3 + accel_profile = adaptive +} diff --git a/mocha.conf b/mocha.conf new file mode 100644 index 0000000..8ccb56a --- /dev/null +++ b/mocha.conf @@ -0,0 +1,78 @@ + +$rosewater = rgb(f5e0dc) +$rosewaterAlpha = f5e0dc + +$flamingo = rgb(f2cdcd) +$flamingoAlpha = f2cdcd + +$pink = rgb(f5c2e7) +$pinkAlpha = f5c2e7 + +$mauve = rgb(cba6f7) +$mauveAlpha = cba6f7 + +$red = rgb(f38ba8) +$redAlpha = f38ba8 + +$maroon = rgb(eba0ac) +$maroonAlpha = eba0ac + +$peach = rgb(fab387) +$peachAlpha = fab387 + +$yellow = rgb(f9e2af) +$yellowAlpha = f9e2af + +$green = rgb(a6e3a1) +$greenAlpha = a6e3a1 + +$teal = rgb(94e2d5) +$tealAlpha = 94e2d5 + +$sky = rgb(89dceb) +$skyAlpha = 89dceb + +$sapphire = rgb(74c7ec) +$sapphireAlpha = 74c7ec + +$blue = rgb(89b4fa) +$blueAlpha = 89b4fa + +$lavender = rgb(b4befe) +$lavenderAlpha = b4befe + +$text = rgb(cdd6f4) +$textAlpha = cdd6f4 + +$subtext1 = rgb(bac2de) +$subtext1Alpha = bac2de + +$subtext0 = rgb(a6adc8) +$subtext0Alpha = a6adc8 + +$overlay2 = rgb(9399b2) +$overlay2Alpha = 9399b2 + +$overlay1 = rgb(7f849c) +$overlay1Alpha = 7f849c + +$overlay0 = rgb(6c7086) +$overlay0Alpha = 6c7086 + +$surface2 = rgb(585b70) +$surface2Alpha = 585b70 + +$surface1 = rgb(45475a) +$surface1Alpha = 45475a + +$surface0 = rgb(313244) +$surface0Alpha = 313244 + +$base = rgb(1e1e2e) +$baseAlpha = 1e1e2e + +$mantle = rgb(181825) +$mantleAlpha = 181825 + +$crust = rgb(11111b) +$crustAlpha = 11111b diff --git a/rules.conf b/rules.conf new file mode 100644 index 0000000..80dfb52 --- /dev/null +++ b/rules.conf @@ -0,0 +1,155 @@ +windowrule { + name = nodim-youtube + no_dim = on + opaque = on + match:class = ^(firefox|Firefox)$ + match:title = ^(.*YouTube.*)$ +} + +windowrule { + name = nodim-delfin + no_dim = on + opaque = on + match:class = ^(cafe.avery.Delfin)$ +} + +windowrule { + name = float-firefoxDialogue + float = on + match:title = ^(About Mozilla Firefox)$ +} + +windowrule { + name = file-browser + float = on + size = 800 500 + animation = popin + match:class = ^(xdg-desktop-portal-gtk)$ +} + +windowrule { + name = firefox-pip + float = on + match:class = ^(firefox)$ + match:title = ^(Picture-in-Picture)$ +} + +windowrule { + name = float-history + float = on + match:class = ^(firefox)$ + match:title = ^(Library)$ +} + +windowrule { + name = nwg-look + float = on + match:class = ^(nwg-look)$ +} + +windowrule { + name = volume-control + float = on + match:class = ^(org.pulseaudio.pavucontrol)$ +} + +windowrule { + name = blueman-size + float = on + size = 600 400 + animation = popin + match:class = ^(.blueman-manager-wrapped)$ +} + +windowrule { + name = float-nm + float = on + match:class = ^(nm-applet)$ +} + +windowrule { + name = float-nm + float = on + match:class = ^(nm-connection-editor)$ +} + +windowrule { + name = float-auth-agent + float = on + match:class = ^(org.kde.polkit-kde-authentication-agent-1)$ +} + +windowrule { + name = firefox-popups + size = 800 500 + animation = popin + match:class = ^(firefox)$ + match:title = ^(.*Save.*) +} + +windowrule { + name = otter-launcher-initial + size = 425 220 + float = on + opaque = on + animation = popin 50% + match:class = ^(otter)$ +} + +windowrule { + name = jellyfin tui + animation = slide top + match:class = ^(jf-tui)$ +} + +windowrule { + name = nodim-fullscreen + match:fullscreen = 1 + no_dim = on +} + +windowrule { + name = nodim-kitty + match:class = ^(kitty)$ + opaque = on + xray = on +} + +layerrule { + name = layerrule-1 + blur = on + ignore_alpha = 0 + match:namespace = notifications +} + +layerrule { + name = something to do with wlogout + blur = on + match:namespace = logout_dialog +} + +layerrule { + name = layerrule-3 + blur = on + ignore_alpha = 0 + match:namespace = waybar +} + +layerrule { + name = layerrule-4 + ignore_alpha = 0 + blur = on + animation = popin 70% + match:namespace = otter-panel +} + +layerrule { + name = layerrule-5 + animation = slide right + blur = on + ignore_alpha = 0 + match:namespace = swaync-control-center +} + +workspace = special:music, gapsout:5 400 400 400 +workspace = special:scratch, gapsout:20 20 20 20 diff --git a/startup.conf b/startup.conf new file mode 100644 index 0000000..c9ac52d --- /dev/null +++ b/startup.conf @@ -0,0 +1,15 @@ +exec-once = $scrPath/resetxdgportal.sh # reset XDPH for screenshare +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH +exec-once = dbus-update-activation-environment --systemd --all # for XDPH +exec-once = dconf write /org/gnome/desktop/interface/color-scheme '"prefer-dark"' +exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH +exec-once = $scrPath/polkitkdeauth.sh # authentication dialogue for GUI apps +exec-once = waybar # System bar +exec-once = sleep 10 && curl -X POST -H "Content-Type: application/json" -d "{\"ref\":\"$(git -C ~/.dotfiles rev-parse HEAD)\", \"status\":\"$(git -C ~/.dotfiles diff --quiet && echo "clean" || echo "dirty")\"}" https://n8n.voidarc.co.uk/webhook/config-checker # check if config is up to date +exec-once = elephant # Data for Walker +exec-once = walker --gapplication-service # make walker faster +exec-once = dunst # Notifications +exec-once = ~/.config/scripts/.venv/bin/python ~/.config/scripts/notify.py # Android notification forwarding +exec-once = wayvnc 0.0.0.0 --output=DP-1 # runs vnc server on all interfaces +exec-once = syncthing -home=/home/user01/.config/syncthing -no-browser # starts syncthing in background +exec-once = gotify-desktop # gotify daemon for service notifications diff --git a/style.conf b/style.conf new file mode 100644 index 0000000..4d2d7d1 --- /dev/null +++ b/style.conf @@ -0,0 +1,93 @@ +# Environment +env = PATH,$PATH:$scrPath +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_QPA_PLATFORMTHEME,qt6ct +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = MOZ_ENABLE_WAYLAND,1 +env = GDK_SCALE,1 + +# Misc +misc { + vrr = 0 + animate_manual_resizes = true + disable_hyprland_logo = true + disable_splash_rendering = true + force_default_wallpaper = 0 +} + +xwayland { + force_zero_scaling = false +} + +# Layout +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this + permanent_direction_override = true +} + +scrolling { + column_width = 0.8 + follow_min_visible = 0.1 + focus_fit_method = 1 +} + +# GTK shennanigans +exec = gsettings set org.gnome.desktop.interface icon-theme 'BeautyDream' +exec = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha' +exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' + +# Make things look nice +general { + gaps_in = 3 + gaps_out = 5, 6, 6, 6 + border_size = 3 + col.active_border = rgba(ca9ee6cc) rgba(f38ba8cc) 45deg + col.inactive_border = rgba(45475aaa) rgba(b4befeaa) 45deg + layout = scrolling + resize_on_border = true +} + +ecosystem { + no_update_news = true + no_donation_nag = true +} + +group { + col.border_active = rgba(ca9ee6cc) rgba(f2d5cfcc) 45deg + col.border_inactive = rgba(bac2decc) rgba(bac2decc) 45deg + col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg + col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg +} + +decoration { + rounding = 10 + + active_opacity = 1.0 + inactive_opacity = 0.8 + + dim_inactive = true + dim_strength = 0.2 + + blur { + enabled = true + size = 2 + passes = 3 + vibrancy = 0.5 + } +} + +# Fonts and Cursors +exec = hyprctl setcursor Bibata-Modern-Ice 20 +exec = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Ice' +exec = gsettings set org.gnome.desktop.interface cursor-size 20 +exec = gsettings set org.gnome.desktop.interface font-name 'FiraMono Nerd Font' +exec = gsettings set org.gnome.desktop.interface document-font-name 'Cantarell 10' +exec = gsettings set org.gnome.desktop.interface monospace-font-name 'CaskaydiaCove Nerd Font Mono 9' +exec = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba' +exec = gsettings set org.gnome.desktop.interface font-hinting 'full' +env XCURSOR_SIZE = 20 diff --git a/windows.conf b/windows.conf new file mode 100644 index 0000000..ddc927d --- /dev/null +++ b/windows.conf @@ -0,0 +1 @@ +monitor = , preferred, auto, 1.2