aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/hyprland/.config/hypr
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-02 12:16:38 -0500
committerCraig Jennings <c@cjennings.net>2026-06-02 12:16:38 -0500
commit8c32bbbf9fab115dc51afa17c081e0763cbee717 (patch)
tree246b46b53c956cfea07bc9d1c2b81f9f8de53d65 /dotfiles/hyprland/.config/hypr
parent3f370d6c19c83430547d1771b0e6fa669dc7d5c5 (diff)
downloadarchsetup-8c32bbbf9fab115dc51afa17c081e0763cbee717.tar.gz
archsetup-8c32bbbf9fab115dc51afa17c081e0763cbee717.zip
refactor: drop in-repo dotfiles/, move stow tooling to the dotfiles repo
Since the installer clones DOTFILES_REPO into ~/.dotfiles and stows from there, the in-repo dotfiles/ tree was dead weight. Nothing reads it at install time. I removed it (831 files) now that both machines are migrated. The Makefile's stow / restow / reset / unstow / import targets and the dotfile-script unit suites moved to the dotfiles repo. They sit alongside the scripts they manage and run standalone (cd ~/.dotfiles && make ...). This Makefile keeps the VM-integration targets and the installer-helper suite (safe-rm-rf). I updated CLAUDE.md and README.md so stow operations run from ~/.dotfiles, and the dotfile-management, theme, and unit-test sections point at the standalone repo. The README was already describing the old in-repo model from before the installer switched to cloning. This brings it in line.
Diffstat (limited to 'dotfiles/hyprland/.config/hypr')
-rw-r--r--dotfiles/hyprland/.config/hypr/conf.d/local.conf15
-rw-r--r--dotfiles/hyprland/.config/hypr/hypridle.conf21
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf334
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprlock.conf100
4 files changed, 0 insertions, 470 deletions
diff --git a/dotfiles/hyprland/.config/hypr/conf.d/local.conf b/dotfiles/hyprland/.config/hypr/conf.d/local.conf
deleted file mode 100644
index 857963c..0000000
--- a/dotfiles/hyprland/.config/hypr/conf.d/local.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-# Machine-local Hyprland overrides
-# This file is sourced by hyprland.conf via conf.d/*.conf glob.
-# Add monitor scaling, keybinds, or other machine-specific settings here.
-# These override the defaults in hyprland.conf.
-#
-# Examples:
-#
-# HiDPI scaling (Framework 13.5" 2256x1504):
-# monitor=eDP-1,preferred,auto,1.566667
-#
-# External monitor:
-# monitor=DP-1,3440x1440@144,auto,1
-#
-# Machine-specific keybinds:
-# bind = $mod, L, exec, hyprlock
diff --git a/dotfiles/hyprland/.config/hypr/hypridle.conf b/dotfiles/hyprland/.config/hypr/hypridle.conf
deleted file mode 100644
index 5a4fe24..0000000
--- a/dotfiles/hyprland/.config/hypr/hypridle.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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 5 minutes
-listener {
- timeout = 300
- on-timeout = brightnessctl -s set 10%
- on-resume = brightnessctl -r
-}
-
-# Lock screen after 7 minutes
-listener {
- timeout = 420
- on-timeout = loginctl lock-session
-}
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
deleted file mode 100644
index c71b1fa..0000000
--- a/dotfiles/hyprland/.config/hypr/hyprland.conf
+++ /dev/null
@@ -1,334 +0,0 @@
-# Hyprland Configuration
-# Translated from DWM config.def.h and sxhkdrc
-# Craig Jennings <c@cjennings.net>
-
-# ============================================================================
-# Monitor Configuration
-# ============================================================================
-monitor=,preferred,auto,auto
-
-# ============================================================================
-# Startup Applications
-# ============================================================================
-# Portal and D-Bus setup FIRST, then waybar (needs portal for appearance query)
-exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
-# Portal restart (not start) reconnects stale portals on Hyprland restart.
-# Backend portals (GTK, Hyprland) must restart BEFORE the main portal to avoid
-# a 50s GTK settings proxy timeout. Waybar starts after portals are ready.
-exec-once = systemctl --user restart xdg-desktop-portal-hyprland xdg-desktop-portal-gtk && systemctl --user restart xdg-desktop-portal && waybar 2>&1 | grep -v "LIBDBUSMENU-GLIB-WARNING" > ~/.local/var/log/waybar-$(date +%Y-%m-%d-%H%M%S).log
-
-# Core services
-exec-once = /usr/lib/polkit-kde-authentication-agent-1
-exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh
-exec-once = dunst > ~/.local/var/log/dunst-$(date +%Y-%m-%d-%H%M%S).log 2>&1
-
-# Desktop appearance
-exec-once = awww-daemon && sleep 1 && awww img ~/pictures/wallpaper/trondheim-norway.jpg
-
-# Background services
-exec-once = touchpad-auto
-exec-once = hypridle > ~/.local/var/log/hypridle-$(date +%Y-%m-%d-%H%M%S).log 2>&1
-exec-once = /usr/lib/geoclue-2.0/demos/agent
-exec-once = gammastep > ~/.local/var/log/gammastep-$(date +%Y-%m-%d-%H%M%S).log 2>&1
-exec-once = blueman-applet
-exec-once = mpd
-
-# Pocketbook panel (pre-launch hidden, toggle via waybar icon or $mod+P)
-exec-once = pocketbook --hidden
-
-# Pyprland (scratchpads, magnify, etc.)
-exec-once = pypr > ~/.local/var/log/pypr-$(date +%Y-%m-%d-%H%M%S).log 2>&1
-exec-once = hypr-refocus-scratchpad
-
-# Apps that can start later (sleep ensures waybar tray is registered)
-exec-once = sleep 1 && signal-desktop --start-in-tray --ozone-platform=wayland
-exec-once = sleep 1 && Telegram -startintray
-exec-once = protonmail-bridge --no-window
-exec-once = sleep 1 && protonvpn-app --start-minimized
-exec-once = insync start
-
-# ============================================================================
-# Environment Variables
-# ============================================================================
-env = XCURSOR_SIZE,24
-env = XCURSOR_THEME,Bibata-Modern-Ice
-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 = 25
- gaps_out = 30
- border_size = 3
- col.active_border = rgba(daa520ff)
- col.inactive_border = rgba(444444ff)
- # Pyprland 3.4+ applies `group deny` to scratchpads, which routes their
- # border through col.nogroup_border* instead of col.*_border. Without
- # these overrides Hyprland's defaults paint scratchpads bright magenta.
- col.nogroup_border_active = rgba(daa520ff)
- col.nogroup_border = rgba(444444ff)
- layout = master
- resize_on_border = true
-}
-
-decoration {
- rounding = 10
- blur {
- enabled = false
- }
- shadow {
- enabled = false
- }
-}
-
-animations {
- enabled = true
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
- animation = windows, 1, 2, myBezier
- animation = windowsOut, 1, 2, default, popin 80%
- animation = fade, 1, 2, default
- animation = workspaces, 1, 2, default
- animation = specialWorkspace, 1, 2, default, slidevert
-}
-
-# ============================================================================
-# Layout (master-stack like DWM tile)
-# ============================================================================
-master {
- new_status = master
- new_on_top = true
- mfact = 0.55
-}
-
-dwindle {
- preserve_split = true
-}
-
-# ============================================================================
-# Input
-# ============================================================================
-cursor {
- no_warps = true
- inactive_timeout = 2.0
-}
-
-input {
- kb_layout = us
- kb_options = ctrl:nocaps
- numlock_by_default = true
- follow_mouse = 0
- float_switch_override_focus = 1
- mouse_refocus = false
- natural_scroll = true
- touchpad {
- natural_scroll = true
- }
-}
-
-# ============================================================================
-# Misc
-# ============================================================================
-misc {
- force_default_wallpaper = 0
- disable_hyprland_logo = true
- focus_on_activate = true
-}
-
-# ============================================================================
-# Debug (temporary - disable when stable)
-# ============================================================================
-debug {
- disable_logs = false
-}
-
-# ============================================================================
-# XWayland
-# ============================================================================
-xwayland {
- force_zero_scaling = true
-}
-
-# ============================================================================
-# Window Rules (Hyprland 0.53+ syntax: match:CONDITION, RULE)
-# ============================================================================
-# Floating windows (from DWM rules)
-windowrule = match:class ^(xdg-desktop-portal-gtk)$, float on
-windowrule = match:class ^(Gimp)$, float on
-windowrule = match:class ^(caffeine)$, float on
-windowrule = match:class ^(blueman-services)$, float on
-windowrule = match:class ^(Blueman-manager)$, float on
-windowrule = match:class ^(qalculate-gtk)$, float on
-windowrule = match:title ^(Event Tester)$, float on
-
-# NOTE: center windowrules removed 2026-03-04 per pyprland maintainer suggestion
-# Testing whether pyprland handles scratchpad re-centering natively (issue #211)
-
-# Zoom — float all windows, fix disappearing popup menus
-windowrule = match:class ^(zoom)$, float on
-windowrule = match:class ^(zoom)$ match:title ^(menu window)$, stay_focused on
-windowrule = match:class ^(zoom)$ match:title ^(confirm window)$, stay_focused on
-
-# Gaming
-windowrule = match:class ^(Civ5XP)$, fullscreen on
-
-# ============================================================================
-# Key Bindings
-# ============================================================================
-$mod = SUPER
-
-# Terminal and core apps (from DWM)
-bind = $mod, T, exec, foot
-bind = $mod, E, exec, emacsclient -c -a "" || emacs
-bind = $mod, W, exec, $BROWSER
-bind = $mod, F, exec, nautilus
-
-# From sxhkdrc
-bind = $mod, SPACE, exec, fuzzel
-bind = $mod SHIFT, W, exec, $ALTBROWSER
-bind = CTRL ALT, W, exec, tor-browser
-bind = $mod, P, exec, pocketbook
-bind = $mod, V, exec, virtualbox
-bind = $mod SHIFT, L, exec, calibre
-bind = $mod SHIFT, P, exec, waypaper
-
-# Theme switching
-bind = $mod, Y, exec, set-theme --toggle
-bind = $mod SHIFT, Y, exec, set-theme --pick
-
-# Window management (from DWM)
-# Layout-aware navigation (works across master, scrolling)
-bind = $mod, J, exec, layout-navigate next
-bind = $mod, K, exec, layout-navigate prev
-bind = $mod SHIFT, J, exec, layout-navigate next move
-bind = $mod SHIFT, K, exec, layout-navigate prev move
-bind = $mod, H, exec, layout-resize shrink
-bind = $mod, L, exec, layout-resize grow
-bind = $mod, RETURN, layoutmsg, swapwithmaster master
-bind = $mod, G, centerwindow
-bind = $mod, TAB, workspace, previous
-bind = $mod SHIFT, C, killactive
-
-# Layouts: master -> scrolling -> monocle
-# Cycle with Shift+arrows, or jump directly with Shift+T/S/M
-bind = $mod SHIFT, RIGHT, exec, layout-cycle next
-bind = $mod SHIFT, LEFT, exec, layout-cycle prev
-bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation left
-bind = $mod SHIFT, S, exec, hyprctl keyword general:layout scrolling
-bind = $mod SHIFT, M, exec, hyprctl keyword general:layout monocle
-bind = $mod SHIFT, SPACE, togglefloating
-
-# Master layout adjustments
-bind = $mod, U, layoutmsg, addmaster
-bind = $mod, D, layoutmsg, removemaster
-
-# Stash windows (hide to special workspace)
-# O = stash focused / Alt+O = stash others / Shift+O = restore all
-bind = $mod, O, exec, stash-window
-bind = $mod ALT, O, exec, stash-others
-bind = $mod SHIFT, O, exec, stash-restore
-
-# Gaps (from DWM)
-bind = $mod, MINUS, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq -r '.custom' | cut -d' ' -f1) - 5 )) && hyprctl keyword general:gaps_in $(( $(hyprctl getoption general:gaps_in -j | jq -r '.custom' | cut -d' ' -f1) - 5 ))
-bind = $mod, EQUAL, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq -r '.custom' | cut -d' ' -f1) + 5 )) && hyprctl keyword general:gaps_in $(( $(hyprctl getoption general:gaps_in -j | jq -r '.custom' | cut -d' ' -f1) + 5 ))
-bind = $mod SHIFT, EQUAL, exec, hyprctl keyword general:gaps_out 30 && hyprctl keyword general:gaps_in 25
-bind = $mod SHIFT, MINUS, exec, hyprctl keyword general:gaps_out 0 && hyprctl keyword general:gaps_in 0
-
-# 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
-
-# Move window to workspace (from DWM tag)
-bind = $mod SHIFT, 1, movetoworkspacesilent, 1
-bind = $mod SHIFT, 2, movetoworkspacesilent, 2
-bind = $mod SHIFT, 3, movetoworkspacesilent, 3
-bind = $mod SHIFT, 4, movetoworkspacesilent, 4
-bind = $mod SHIFT, 5, movetoworkspacesilent, 5
-bind = $mod SHIFT, 6, movetoworkspacesilent, 6
-bind = $mod SHIFT, 7, movetoworkspacesilent, 7
-bind = $mod SHIFT, 8, movetoworkspacesilent, 8
-bind = $mod SHIFT, 9, movetoworkspacesilent, 9
-
-# 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 (via pyprland)
-# ============================================================================
-# Configured in ~/.config/hypr/pyprland.toml
-# Uses normal workspaces (not special), so new windows won't be captured
-bind = $mod SHIFT, RETURN, exec, pypr toggle term
-bind = $mod, I, exec, pypr toggle ai-term
-bind = $mod, A, exec, pypr toggle audio
-bind = $mod, R, exec, pypr toggle monitor
-bind = $mod, N, exec, pypr toggle network
-bind = $mod, SLASH, exec, pypr toggle music
-
-# Magnify (zoom)
-bind = $mod, Z, exec, pypr zoom
-
-# Calculator (not a scratchpad, just launches app)
-bind = $mod, X, exec, qalculate-gtk
-bind = $mod, C, exec, hyprpicker -a
-
-# 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 (grim + slurp + fuzzel menu)
-bind = $mod, S, exec, screenshot region
-bind = CTRL $mod, S, exec, screenshot fullscreen
-
-# Lock screen
-bind = $mod, ESCAPE, exec, hyprlock
-
-# Touchpad toggle (Mouse)
-bind = $mod, M, exec, toggle-touchpad
-
-# Exit/session
-bind = $mod SHIFT, Q, exec, pgrep -x wlogout || wlogout -b 3 -T 600 -B 600 -L 1200 -R 1200 -c 20 -r 20
-bind = $mod SHIFT, BACKSPACE, exit
-bind = $mod SHIFT, ESCAPE, exec, hyprctl reload
-bind = CTRL ALT $mod, K, exec, hyprctl kill
-
-# Mouse bindings (from DWM buttons)
-bindm = $mod, mouse:272, movewindow
-bindm = $mod, mouse:273, resizewindow
-bindm = $mod SHIFT, mouse:272, resizewindow
-
-# ============================================================================
-# Machine-local overrides
-# ============================================================================
-# Sourced last so machine-specific settings (monitor scale, gaps, keybinds)
-# override the defaults above. See conf.d/local.conf.
-source = $HOME/.config/hypr/conf.d/*.conf
diff --git a/dotfiles/hyprland/.config/hypr/hyprlock.conf b/dotfiles/hyprland/.config/hypr/hyprlock.conf
deleted file mode 100644
index 3751045..0000000
--- a/dotfiles/hyprland/.config/hypr/hyprlock.conf
+++ /dev/null
@@ -1,100 +0,0 @@
-# Hyprlock configuration - Dupre theme
-# Warm, earthy colors from dupre-theme.el
-
-general {
- hide_cursor = true
-}
-
-animations {
- enabled = true
- bezier = linear, 1, 1, 0, 0
- animation = fadeIn, 1, 5, linear
- animation = fadeOut, 1, 5, linear
- animation = inputFieldDots, 1, 2, linear
- animation = inputFieldColors, 1, 3, linear
-}
-
-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
-}
-
-# Clock (top)
-label {
- monitor =
- text = $TIME12
- text_align = center
- color = rgb(969385)
- font_size = 64
- font_family = BerkeleyMono Nerd Font
- position = 0, 15%
- halign = center
- valign = center
-}
-
-# Profile image
-image {
- monitor =
- path = ~/pictures/devilman.jpg
- size = 120
- rounding = -1
- border_size = 3
- border_color = rgb(d7af5f)
- position = 0, 0%
- halign = center
- valign = center
- shadow_passes = 2
- shadow_size = 3
- shadow_color = rgba(0, 0, 0, 0.5)
-}
-
-# Username
-label {
- monitor =
- text = $USER
- text_align = center
- color = rgb(d7af5f)
- font_size = 36
- font_family = BerkeleyMono Nerd Font
- position = 0, -7%
- halign = center
- valign = center
-}
-
-# Password input
-input-field {
- monitor =
- size = 20%, 4%
- outline_thickness = 0
- dots_size = 0.33
- dots_spacing = 0.15
- dots_center = true
- dots_rounding = -1
- outer_color = rgb(151311)
- inner_color = rgb(151311)
- font_color = rgb(969385)
- fade_on_empty = true
- fade_timeout = 1000
- placeholder_text = <i>Password...</i>
- hide_input = false
- rounding = 8
- check_color = rgb(d7af5f)
- fail_color = rgb(d47c59)
- fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
-
- capslock_color = rgb(ccc768)
- numlock_color = -1
- bothlock_color = -1
- invert_numlock = false
- swap_font_color = false
- position = 0, -12%
- halign = center
- valign = center
-}