summaryrefslogtreecommitdiff
path: root/arch/hyprland
diff options
context:
space:
mode:
Diffstat (limited to 'arch/hyprland')
-rw-r--r--arch/hyprland/.config/hypr/hypridle.conf32
-rw-r--r--arch/hyprland/.config/hypr/hyprland.conf86
-rw-r--r--arch/hyprland/.config/hypr/hyprlock.conf52
-rw-r--r--arch/hyprland/.config/hypr/keybinds.conf106
-rw-r--r--arch/hyprland/.config/hypr/monitors.conf8
-rw-r--r--arch/hyprland/.config/hypr/theme.conf7
-rw-r--r--arch/hyprland/.config/hypr/windowrules.conf62
7 files changed, 353 insertions, 0 deletions
diff --git a/arch/hyprland/.config/hypr/hypridle.conf b/arch/hyprland/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..c6e2ac8
--- /dev/null
+++ b/arch/hyprland/.config/hypr/hypridle.conf
@@ -0,0 +1,32 @@
+general {
+ lock_cmd = pidof hyprlock || hyprlock
+ before_sleep_cmd = loginctl lock-session
+ after_sleep_cmd = hyprctl dispatch dpms on
+ ignore_dbus_inhibit = false
+}
+
+# Dim screen after 2.5 min
+listener {
+ timeout = 150
+ on-timeout = brightnessctl -s set 10%
+ on-resume = brightnessctl -r
+}
+
+# Lock after 5 min
+listener {
+ timeout = 300
+ on-timeout = loginctl lock-session
+}
+
+# Display off after 5.5 min
+listener {
+ timeout = 330
+ on-timeout = hyprctl dispatch dpms off
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend after 30 min
+listener {
+ timeout = 1800
+ on-timeout = systemctl suspend
+}
diff --git a/arch/hyprland/.config/hypr/hyprland.conf b/arch/hyprland/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..65c7338
--- /dev/null
+++ b/arch/hyprland/.config/hypr/hyprland.conf
@@ -0,0 +1,86 @@
+source = ~/.config/hypr/monitors.conf
+source = ~/.config/hypr/theme.conf
+source = ~/.config/hypr/keybinds.conf
+source = ~/.config/hypr/windowrules.conf
+
+# NVIDIA
+env = WLR_NO_HARDWARE_CURSORS,1
+env = EGL_PLATFORM,wayland
+env = OZONE_PLATFORM,wayland
+env = XCURSOR_SIZE,24
+env = XCURSOR_THEME,Bibata-Modern-Classic
+
+general {
+ layout = dwindle
+ gaps_in = 3
+ gaps_out = 3
+ border_size = 2
+ # border colors are in theme.conf
+}
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+input {
+ kb_layout = us
+ follow_mouse = 1
+ special_fallthrough = true
+ touchpad {
+ natural_scroll = false
+ }
+}
+
+binds {
+ movefocus_cycles_fullscreen = 1
+}
+
+cursor {
+ no_hardware_cursors = 1
+}
+
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ font_family = JetBrainsMono Nerd Font
+ vfr = 1
+ vrr = 1
+ enable_swallow = true
+}
+
+decoration {
+ rounding = 4
+ active_opacity = 1.0
+ inactive_opacity = 0.92
+ blur {
+ enabled = true
+ size = 6
+ passes = 3
+ vibrancy = 0.2
+ special = true
+ new_optimizations = true
+ }
+ shadow {
+ enabled = true
+ range = 4
+ render_power = 3
+ }
+}
+
+animations {
+ enabled = true
+ bezier = myBezier, 0.05, 0.97, 0.05, 0.97
+ animation = windows, 1, 4, myBezier
+ animation = windowsOut, 1, 4, default, popin 80%
+ animation = fade, 1, 4, default
+ animation = workspaces, 1, 4, default
+}
+
+exec-once = awww-daemon
+exec-once = mako
+exec-once = hypridle
+exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+exec-once = eww daemon && eww open bar
+exec-once = bash -c 'sleep 0.5; [ -f ~/.cache/wallust/last-wallpaper ] && ~/.local/bin/set-wallpaper "$(cat ~/.cache/wallust/last-wallpaper)"'
+exec-once = spicetify watch -s
diff --git a/arch/hyprland/.config/hypr/hyprlock.conf b/arch/hyprland/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..24dd752
--- /dev/null
+++ b/arch/hyprland/.config/hypr/hyprlock.conf
@@ -0,0 +1,52 @@
+general {
+ hide_cursor = true
+ no_fade_in = false
+ disable_loading_bar = true
+ ignore_empty_input = true
+}
+
+background {
+ monitor =
+ # Wallust: replace with path = ~/.cache/wallust/last-wallpaper
+ path = screenshot
+ blur_passes = 3
+ blur_size = 7
+ brightness = 0.5
+}
+
+label {
+ monitor =
+ text = cmd[update:1000] date +"%-H:%M"
+ font_size = 72
+ font_family = JetBrainsMono Nerd Font
+ color = rgba(cdd6f4ff)
+ position = 0, 200
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ text = cmd[update:60000] date +"%A, %B %d"
+ font_size = 18
+ font_family = JetBrainsMono Nerd Font
+ color = rgba(cdd6f4cc)
+ position = 0, 120
+ halign = center
+ valign = center
+}
+
+input-field {
+ monitor =
+ size = 300, 48
+ outline_thickness = 2
+ outer_color = rgba(cdd6f4ff)
+ inner_color = rgba(1e1e2ecc)
+ font_color = rgba(cdd6f4ff)
+ fade_on_empty = true
+ placeholder_text = 󰌾 Password
+ font_family = JetBrainsMono Nerd Font
+ position = 0, -80
+ halign = center
+ valign = center
+}
diff --git a/arch/hyprland/.config/hypr/keybinds.conf b/arch/hyprland/.config/hypr/keybinds.conf
new file mode 100644
index 0000000..2f00c8f
--- /dev/null
+++ b/arch/hyprland/.config/hypr/keybinds.conf
@@ -0,0 +1,106 @@
+$mainMod = SUPER
+
+# ── Core ──────────────────────────────────────────────────────────────────────
+bind = $mainMod, Q, exec, ghostty
+bind = $mainMod, C, killactive
+bind = $mainMod, J, togglesplit
+bind = $mainMod CTRL, V, togglefloating
+bind = $mainMod, F, fullscreen, 1
+bind = $mainMod CTRL, F, fullscreen, 0
+bind = $mainMod SHIFT, L, exec, loginctl lock-session
+bind = $mainMod, R, exec, ~/.local/bin/launcher
+bind = $mainMod, W, exec, ghostty --class=float-term -e ~/.local/bin/pick-wallpaper
+bind = $mainMod SHIFT, F, exec, zen-browser
+
+# Keyboard pointer modes (wl-kbptr)
+bind = $mainMod, G, exec, pkill wl-kbptr || true; wl-kbptr -o modes=floating,click -o mode_floating.source=detect
+bind = $mainMod, M, exec, pkill wl-kbptr || true; wl-kbptr -o modes=tile,bisect,click
+
+# Clipboard
+bind = $mainMod SHIFT, V, exec, cliphist list | bemenu | cliphist decode | wl-copy
+
+# ── Focus movement ────────────────────────────────────────────────────────────
+bind = $mainMod, left, movefocus, l
+bind = $mainMod, right, movefocus, r
+bind = $mainMod, up, movefocus, u
+bind = $mainMod, down, movefocus, d
+bind = $mainMod, h, movefocus, l
+bind = $mainMod, l, movefocus, r
+bind = $mainMod, k, movefocus, u
+bind = $mainMod, j, movefocus, d
+
+# ── Mouse scroll wheel movement ───────────────────────────────────────────────
+binde = $mainMod, B, exec, ydotool mousemove --wheel -- 0 1
+binde = $mainMod, V, exec, ydotool mousemove --wheel -- 0 -1
+
+# ── Workspaces ────────────────────────────────────────────────────────────────
+bind = $mainMod, 1, workspace, 1
+bind = $mainMod, 2, workspace, 2
+bind = $mainMod, 3, workspace, 3
+bind = $mainMod, 4, workspace, 4
+bind = $mainMod, 5, workspace, 5
+bind = $mainMod, 6, workspace, 6
+bind = $mainMod, 7, workspace, 7
+bind = $mainMod, 8, workspace, 8
+bind = $mainMod, 9, workspace, 9
+bind = $mainMod, 0, workspace, 10
+
+bind = $mainMod SHIFT, 1, movetoworkspace, 1
+bind = $mainMod SHIFT, 2, movetoworkspace, 2
+bind = $mainMod SHIFT, 3, movetoworkspace, 3
+bind = $mainMod SHIFT, 4, movetoworkspace, 4
+bind = $mainMod SHIFT, 5, movetoworkspace, 5
+bind = $mainMod SHIFT, 6, movetoworkspace, 6
+bind = $mainMod SHIFT, 7, movetoworkspace, 7
+bind = $mainMod SHIFT, 8, movetoworkspace, 8
+bind = $mainMod SHIFT, 9, movetoworkspace, 9
+bind = $mainMod SHIFT, 0, movetoworkspace, 10
+
+bind = $mainMod, mouse_down, workspace, e+1
+bind = $mainMod, mouse_up, workspace, e-1
+
+# ── Special workspaces (scratchpads) ─────────────────────────────────────────
+bind = $mainMod, S, togglespecialworkspace, magic
+bind = $mainMod SHIFT, S, movetoworkspace, special:magic
+
+# ── Screenshots ───────────────────────────────────────────────────────────────
+bind = , Print, exec, grim -g "$(slurp)" - | wl-copy
+bind = $mainMod, Print, exec, grim - | wl-copy
+bind = $mainMod SHIFT, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy
+
+# ── Resize submap ─────────────────────────────────────────────────────────────
+bind = $mainMod CTRL, R, submap, resize
+
+submap = resize
+binde = , h, resizeactive, -20 0
+binde = , j, resizeactive, 0 20
+binde = , k, resizeactive, 0 -20
+binde = , l, resizeactive, 20 0
+binde = , left, resizeactive, -20 0
+binde = , down, resizeactive, 0 20
+binde = , up, resizeactive, 0 -20
+binde = , right, resizeactive, 20 0
+bind = , Escape, submap, reset
+bind = , Return, submap, reset
+bind = , catchall, submap, reset
+submap = reset
+
+# ── Mouse window management ───────────────────────────────────────────────────
+bindm = $mainMod, mouse:272, movewindow
+bindm = $mainMod CTRL, mouse:272, movewindow
+bindm = $mainMod, mouse:273, resizewindow
+
+# ── Media keys ────────────────────────────────────────────────────────────────
+bindl = , XF86AudioPlay, exec, playerctl play-pause
+bindl = , XF86AudioNext, exec, playerctl next
+bindl = , XF86AudioPrev, exec, playerctl previous
+bindl = , XF86AudioMute, exec, pamixer -t
+
+bindle = , XF86AudioRaiseVolume, exec, pamixer -i 5
+bindle = , XF86AudioLowerVolume, exec, pamixer -d 5
+bindle = , XF86MonBrightnessUp, exec, brightnessctl set +5%
+bindle = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
+
+bind = $mainMod, F2, exec, brightnessctl -d asus::kbd_backlight set 1-
+bind = $mainMod, F3, exec, brightnessctl -d asus::kbd_backlight set +1
+bind = $mainMod, F4, exec, asusctl aura effect --next-mode
diff --git a/arch/hyprland/.config/hypr/monitors.conf b/arch/hyprland/.config/hypr/monitors.conf
new file mode 100644
index 0000000..6acb585
--- /dev/null
+++ b/arch/hyprland/.config/hypr/monitors.conf
@@ -0,0 +1,8 @@
+# Laptop screen
+monitor = desc:BOE NE160WUM-NX2, 1920x1200@165, 0x0, 1
+
+# Fallback for any other connected display
+monitor = , preferred, auto, 1
+
+# Multi-monitor: uncomment and configure when adding external display
+# monitor = desc:YOUR_MONITOR_DESC, 1920x1080@144, auto, 1, transform, 1
diff --git a/arch/hyprland/.config/hypr/theme.conf b/arch/hyprland/.config/hypr/theme.conf
new file mode 100644
index 0000000..0107198
--- /dev/null
+++ b/arch/hyprland/.config/hypr/theme.conf
@@ -0,0 +1,7 @@
+# Theme / color configuration — generated by wallust
+# Run set-wallpaper <path> to regenerate
+#
+# If ~/.cache/wallust/hyprland-colors.conf doesn't exist yet (first boot),
+# the fallback colors below are used until you set a wallpaper.
+
+source = ~/.cache/wallust/hyprland-colors.conf
diff --git a/arch/hyprland/.config/hypr/windowrules.conf b/arch/hyprland/.config/hypr/windowrules.conf
new file mode 100644
index 0000000..6778846
--- /dev/null
+++ b/arch/hyprland/.config/hypr/windowrules.conf
@@ -0,0 +1,62 @@
+# ── Spotify transparency ──────────────────────────────────────────────────────
+# Barely-noticeable opacity lets Hyprland's compositor blur show wallpaper
+# bleed-through behind the CSS rgba panels in the spicetify theme.
+windowrule {
+ name = spotify-transparency
+ match:class = Spotify
+ opacity = 0.90 override
+}
+
+# ── Floating terminal (Super+Q with float-term class) ─────────────────────────
+windowrule {
+ name = float-term
+ match:class = float-term
+ float = true
+ center = true
+ stay_focused = true
+ size = 900 600
+}
+
+# ── Wallpaper picker ─────────────────────────────────────────────────────────
+windowrule {
+ name = wallpaper-picker
+ match:class = wallpaper-picker
+ float = true
+ center = true
+ size = 1200 700
+}
+
+# ── bemenu launcher window ────────────────────────────────────────────────────
+windowrule {
+ name = launcher
+ match:class = launcher
+ float = true
+ center = true
+ size = 800 500
+}
+
+# ── Suppress maximize requests ────────────────────────────────────────────────
+windowrule {
+ name = suppress-maximize
+ match:class = .*
+ suppress_event = maximize
+}
+
+# ── Fix XWayland drag artifacts ───────────────────────────────────────────────
+windowrule {
+ name = fix-xwayland-drags
+ match:class = ^$
+ match:title = ^$
+ match:xwayland = true
+ match:float = true
+ match:fullscreen = false
+ match:pin = false
+ no_focus = true
+}
+
+# ── Inhibit idle when fullscreen ─────────────────────────────────────────────
+windowrule {
+ name = no-idle-fullscreen
+ match:fullscreen = true
+ idle_inhibit = fullscreen
+}