summaryrefslogtreecommitdiff
path: root/dotfiles/hyprland/.config/hypr
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/hyprland/.config/hypr')
-rw-r--r--dotfiles/hyprland/.config/hypr/hypridle.conf34
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf287
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprlock.conf75
3 files changed, 396 insertions, 0 deletions
diff --git a/dotfiles/hyprland/.config/hypr/hypridle.conf b/dotfiles/hyprland/.config/hypr/hypridle.conf
new file mode 100644
index 0000000..681c741
--- /dev/null
+++ b/dotfiles/hyprland/.config/hypr/hypridle.conf
@@ -0,0 +1,34 @@
+# Hypridle configuration
+# Replaces xautolock -time 5 -locker slock
+
+general {
+ lock_cmd = pidof hyprlock || hyprlock
+ before_sleep_cmd = loginctl lock-session
+ after_sleep_cmd = hyprctl dispatch dpms on
+}
+
+# Screen dim after 4.5 minutes
+listener {
+ timeout = 270
+ on-timeout = brightnessctl -s set 10%
+ on-resume = brightnessctl -r
+}
+
+# Lock screen after 5 minutes (matching xautolock -time 5)
+listener {
+ timeout = 300
+ on-timeout = loginctl lock-session
+}
+
+# Turn off screen after 10 minutes
+listener {
+ timeout = 600
+ on-timeout = hyprctl dispatch dpms off
+ on-resume = hyprctl dispatch dpms on
+}
+
+# Suspend after 30 minutes
+listener {
+ timeout = 1800
+ on-timeout = systemctl suspend
+}
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
new file mode 100644
index 0000000..ce45088
--- /dev/null
+++ b/dotfiles/hyprland/.config/hypr/hyprland.conf
@@ -0,0 +1,287 @@
+# Hyprland Configuration
+# Translated from DWM config.def.h and sxhkdrc
+# Craig Jennings <c@cjennings.net>
+
+# ============================================================================
+# Monitor Configuration
+# ============================================================================
+monitor=,preferred,auto,auto
+
+# ============================================================================
+# Startup Applications
+# ============================================================================
+exec-once = waybar
+exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/dark-lion.jpg
+exec-once = dunst
+exec-once = hypridle
+exec-once = gammastep
+exec-once = nm-applet
+exec-once = blueman-applet
+exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh
+exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = mpd
+exec-once = signal-desktop --start-in-tray --ozone-platform=wayland
+exec-once = protonmail-bridge --no-window
+exec-once = insync start
+
+# ============================================================================
+# Environment Variables
+# ============================================================================
+env = XCURSOR_SIZE,24
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+env = XDG_SESSION_DESKTOP,Hyprland
+env = _JAVA_AWT_WM_NONREPARENTING,1
+
+# ============================================================================
+# Appearance (matching DWM colors)
+# ============================================================================
+# DWM colors: gray1=#222222, gray2=#444444, gray3=#bbbbbb, gray4=#eeeeee, cyan=#daa520
+
+general {
+ gaps_in = 5
+ gaps_out = 10
+ border_size = 3
+ col.active_border = rgba(daa520ff)
+ col.inactive_border = rgba(444444ff)
+ layout = master
+ resize_on_border = true
+}
+
+decoration {
+ rounding = 0
+ blur {
+ enabled = false
+ }
+ shadow {
+ enabled = false
+ }
+}
+
+animations {
+ enabled = true
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ animation = windows, 1, 3, myBezier
+ animation = windowsOut, 1, 3, default, popin 80%
+ animation = fade, 1, 3, default
+ animation = workspaces, 1, 3, default
+}
+
+# ============================================================================
+# Layout (master-stack like DWM tile)
+# ============================================================================
+master {
+ new_status = slave
+ mfact = 0.55
+}
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+}
+
+# ============================================================================
+# Input
+# ============================================================================
+input {
+ kb_layout = us
+ kb_options = ctrl:nocaps
+ follow_mouse = 1
+ touchpad {
+ natural_scroll = true
+ }
+}
+
+# ============================================================================
+# Misc
+# ============================================================================
+misc {
+ force_default_wallpaper = 0
+ disable_hyprland_logo = true
+}
+
+# ============================================================================
+# XWayland
+# ============================================================================
+xwayland {
+ force_zero_scaling = true
+}
+
+# ============================================================================
+# Window Rules
+# ============================================================================
+# Floating windows (from DWM rules)
+windowrulev2 = float, class:^(Gimp)$
+windowrulev2 = float, class:^(caffeine)$
+windowrulev2 = float, class:^(blueman-services)$
+windowrulev2 = float, class:^(Blueman-manager)$
+windowrulev2 = float, class:^(qalculate-gtk)$
+windowrulev2 = float, title:^(Event Tester)$
+
+# ============================================================================
+# Key Bindings
+# ============================================================================
+$mod = SUPER
+
+# Terminal and core apps (from DWM)
+bind = $mod, T, exec, st
+bind = $mod, E, exec, emacsclient -c -a "" || emacs
+bind = $mod, W, exec, $BROWSER
+bind = $mod, P, exec, wofi --show drun
+
+# From sxhkdrc
+bind = $mod, SPACE, exec, wofi --show drun
+bind = $mod SHIFT, S, exec, wofi --show ssh
+bind = $mod SHIFT, W, exec, $ALTBROWSER
+bind = CTRL ALT, W, exec, tor-browser
+bind = CTRL ALT, F, exec, thunar
+bind = $mod, V, exec, virtualbox
+bind = $mod SHIFT, L, exec, calibre
+bind = $mod SHIFT, R, exec, shortwave
+
+# Window management (from DWM)
+bind = $mod, J, layoutmsg, cyclenext
+bind = $mod, K, layoutmsg, cycleprev
+bind = $mod SHIFT, J, layoutmsg, swapnext
+bind = $mod SHIFT, K, layoutmsg, swapprev
+bind = $mod, H, resizeactive, -50 0
+bind = $mod, L, resizeactive, 50 0
+bind = $mod, RETURN, layoutmsg, swapwithmaster
+bind = $mod, G, centerwindow
+bind = $mod, TAB, workspace, previous
+bind = $mod SHIFT, C, killactive
+
+# Layouts (from DWM)
+bind = $mod SHIFT, M, exec, hyprctl keyword general:layout master
+bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master
+bind = $mod SHIFT, F, togglefloating
+bind = $mod SHIFT, SPACE, togglefloating
+
+# Master layout adjustments
+bind = $mod, I, layoutmsg, addmaster
+bind = $mod, D, layoutmsg, removemaster
+
+# Gaps (from DWM)
+bind = $mod, MINUS, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq '.int') - 5 ))
+bind = $mod, EQUAL, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq '.int') + 5 ))
+bind = $mod SHIFT, EQUAL, exec, hyprctl keyword general:gaps_out 10
+
+# Toggle bar
+bind = $mod, B, exec, killall -SIGUSR1 waybar
+
+# Fullscreen
+bind = $mod, F11, fullscreen, 0
+
+# Workspaces 1-9 (from DWM TAGKEYS)
+bind = $mod, 1, workspace, 1
+bind = $mod, 2, workspace, 2
+bind = $mod, 3, workspace, 3
+bind = $mod, 4, workspace, 4
+bind = $mod, 5, workspace, 5
+bind = $mod, 6, workspace, 6
+bind = $mod, 7, workspace, 7
+bind = $mod, 8, workspace, 8
+bind = $mod, 9, workspace, 9
+bind = $mod, 0, workspace, 10
+
+# Move window to workspace (from DWM tag)
+bind = $mod SHIFT, 1, movetoworkspace, 1
+bind = $mod SHIFT, 2, movetoworkspace, 2
+bind = $mod SHIFT, 3, movetoworkspace, 3
+bind = $mod SHIFT, 4, movetoworkspace, 4
+bind = $mod SHIFT, 5, movetoworkspace, 5
+bind = $mod SHIFT, 6, movetoworkspace, 6
+bind = $mod SHIFT, 7, movetoworkspace, 7
+bind = $mod SHIFT, 8, movetoworkspace, 8
+bind = $mod SHIFT, 9, movetoworkspace, 9
+bind = $mod SHIFT, 0, movetoworkspace, 10
+
+# Monitor focus (from DWM focusmon)
+bind = $mod, COMMA, focusmonitor, -1
+bind = $mod, PERIOD, focusmonitor, +1
+bind = $mod SHIFT, COMMA, movewindow, mon:-1
+bind = $mod SHIFT, PERIOD, movewindow, mon:+1
+
+# Scratchpads (from DWM togglescratch)
+# Audio mixer (was MODKEY+a -> spaudio/pulsemixer)
+bind = $mod, A, togglespecialworkspace, audio
+bind = $mod, A, exec, [workspace special:audio] pgrep -x pulsemixer || st -n spaudio -e pulsemixer
+windowrulev2 = float, class:^(st)$, title:^(spaudio)$
+windowrulev2 = size 60% 60%, class:^(st)$, title:^(spaudio)$
+windowrulev2 = center, class:^(st)$, title:^(spaudio)$
+windowrulev2 = workspace special:audio, class:^(st)$, title:^(spaudio)$
+
+# System monitor (was MODKEY+m -> spmon/gotop)
+bind = $mod, M, togglespecialworkspace, monitor
+bind = $mod, M, exec, [workspace special:monitor] pgrep -x gotop || st -n spmon -e gotop
+windowrulev2 = float, class:^(st)$, title:^(spmon)$
+windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmon)$
+windowrulev2 = workspace special:monitor, class:^(st)$, title:^(spmon)$
+
+# Music player (was MODKEY+slash -> spmp/ncmpcpp)
+bind = $mod, SLASH, togglespecialworkspace, music
+bind = $mod, SLASH, exec, [workspace special:music] pgrep -x ncmpcpp || st -n spmp -e ncmpcpp
+windowrulev2 = float, class:^(st)$, title:^(spmp)$
+windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmp)$
+windowrulev2 = workspace special:music, class:^(st)$, title:^(spmp)$
+
+# Terminal scratchpad (was MODKEY+Shift+Return -> spterm/tmux)
+bind = $mod SHIFT, RETURN, togglespecialworkspace, term
+bind = $mod SHIFT, RETURN, exec, [workspace special:term] pgrep -f "st.*spterm" || st -n spterm -e tmux
+windowrulev2 = float, class:^(st)$, title:^(spterm)$
+windowrulev2 = size 60% 60%, class:^(st)$, title:^(spterm)$
+windowrulev2 = workspace special:term, class:^(st)$, title:^(spterm)$
+
+# File manager (was MODKEY+f -> spfm/ranger)
+bind = $mod, F, togglespecialworkspace, files
+bind = $mod, F, exec, [workspace special:files] pgrep -x ranger || st -n spfm -e ranger
+windowrulev2 = float, class:^(st)$, title:^(spfm)$
+windowrulev2 = size 60% 60%, class:^(st)$, title:^(spfm)$
+windowrulev2 = workspace special:files, class:^(st)$, title:^(spfm)$
+
+# Calculator (was MODKEY+x or MODKEY+c -> qalculate)
+bind = $mod, X, exec, qalculate-gtk
+bind = $mod, C, exec, qalculate-gtk
+
+# Htop (was MODKEY+Shift+h -> sptop/htop)
+bind = $mod SHIFT, H, togglespecialworkspace, htop
+bind = $mod SHIFT, H, exec, [workspace special:htop] pgrep -x htop || st -n sptop -e htop
+windowrulev2 = float, class:^(st)$, title:^(sptop)$
+windowrulev2 = size 60% 60%, class:^(st)$, title:^(sptop)$
+windowrulev2 = workspace special:htop, class:^(st)$, title:^(sptop)$
+
+# Media/hardware keys
+bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
+bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
+bindl = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
+bindel = , XF86MonBrightnessUp, exec, brightnessctl s +10%
+bindel = , XF86MonBrightnessDown, exec, brightnessctl s 10%-
+
+# Microphone toggle (from sxhkdrc)
+bind = CTRL ALT, SPACE, exec, amixer set Capture toggle && amixer get Capture | grep '\[off\]' && notify-send "Microphone" "Muted" || notify-send "Microphone" "On"
+
+# Bluetooth (from DWM and sxhkdrc)
+bind = $mod SHIFT, B, exec, blueman-manager
+
+# Screenshots (Wayland: grim + slurp instead of maim)
+bind = $mod, S, exec, grim -g "$(slurp)" ~/pictures/screenshots/$(date +%Y.%m.%d-%H%M%S).png && notify-send "Screenshot" "Saved to ~/pictures/screenshots/"
+bind = , Print, exec, grim ~/pictures/screenshots/$(date +%Y.%m.%d-%H%M%S).png && notify-send "Screenshot" "Full screen saved"
+
+# Color picker (Wayland: hyprpicker instead of xcolor)
+# bind = $mod, C, exec, hyprpicker -a # conflicts with calculator, uncomment if needed
+
+# Lock screen (from sxhkdrc: super+Escape)
+bind = $mod, ESCAPE, exec, hyprlock
+
+# Touchpad toggle
+bind = $mod, F9, exec, toggle-touchpad
+
+# Exit/session (from DWM)
+bind = $mod SHIFT, Q, exec, wofi --show dmenu --prompt "Exit?" -D dmenu/exit="0" < /dev/null && hyprctl dispatch exit
+bind = $mod SHIFT, BACKSPACE, exit
+bind = $mod SHIFT, ESCAPE, exec, hyprctl reload
+
+# Mouse bindings (from DWM buttons)
+bindm = $mod, mouse:272, movewindow
+bindm = $mod, mouse:273, resizewindow
+bindm = $mod SHIFT, mouse:272, resizewindow
diff --git a/dotfiles/hyprland/.config/hypr/hyprlock.conf b/dotfiles/hyprland/.config/hypr/hyprlock.conf
new file mode 100644
index 0000000..b4dcfb8
--- /dev/null
+++ b/dotfiles/hyprland/.config/hypr/hyprlock.conf
@@ -0,0 +1,75 @@
+# Hyprlock configuration
+# Matching DWM colors: gray1=#222222, accent=#daa520
+
+general {
+ disable_loading_bar = false
+ hide_cursor = true
+ grace = 0
+ no_fade_in = false
+}
+
+background {
+ monitor =
+ path = screenshot
+ blur_passes = 3
+ blur_size = 8
+ noise = 0.0117
+ contrast = 0.8916
+ brightness = 0.8172
+ vibrancy = 0.1696
+ vibrancy_darkness = 0.0
+}
+
+input-field {
+ monitor =
+ size = 300, 50
+ outline_thickness = 3
+ dots_size = 0.33
+ dots_spacing = 0.15
+ dots_center = true
+ dots_rounding = -1
+ outer_color = rgb(444444)
+ inner_color = rgb(222222)
+ font_color = rgb(bbbbbb)
+ fade_on_empty = true
+ fade_timeout = 1000
+ placeholder_text = <i>Password...</i>
+ hide_input = false
+ rounding = 0
+ check_color = rgb(daa520)
+ fail_color = rgb(d9534f)
+ fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
+ fail_transition = 300
+ capslock_color = rgb(f0ad4e)
+ numlock_color = -1
+ bothlock_color = -1
+ invert_numlock = false
+ swap_font_color = false
+ position = 0, -20
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ text = $TIME
+ text_align = center
+ color = rgb(bbbbbb)
+ font_size = 64
+ font_family = FiraCode Nerd Font Mono
+ position = 0, 80
+ halign = center
+ valign = center
+}
+
+label {
+ monitor =
+ text = $USER
+ text_align = center
+ color = rgb(daa520)
+ font_size = 20
+ font_family = FiraCode Nerd Font Mono
+ position = 0, -80
+ halign = center
+ valign = center
+}