summaryrefslogtreecommitdiff
path: root/dotfiles/hyprland
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/hyprland')
-rw-r--r--dotfiles/hyprland/.config/easyeffectsrc2
-rw-r--r--dotfiles/hyprland/.config/foot/foot.ini44
-rw-r--r--dotfiles/hyprland/.config/fuzzel/fuzzel.ini4
-rw-r--r--dotfiles/hyprland/.config/gammastep/config.ini21
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf102
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprlock.conf22
-rw-r--r--dotfiles/hyprland/.config/themes/dupre/Xresources4
-rw-r--r--dotfiles/hyprland/.config/themes/dupre/dunstrc4
-rw-r--r--dotfiles/hyprland/.config/themes/dupre/waybar.css24
-rw-r--r--dotfiles/hyprland/.config/themes/hudson/Xresources4
-rw-r--r--dotfiles/hyprland/.config/themes/hudson/dunstrc4
-rw-r--r--dotfiles/hyprland/.config/themes/hudson/waybar.css24
-rw-r--r--dotfiles/hyprland/.config/waybar/config12
-rw-r--r--dotfiles/hyprland/.config/waybar/style.css59
-rw-r--r--dotfiles/hyprland/.config/waypaper/config.ini27
-rw-r--r--dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf3
-rwxr-xr-xdotfiles/hyprland/.local/bin/focus-restore9
-rwxr-xr-xdotfiles/hyprland/.local/bin/monitor-dashboard37
-rwxr-xr-xdotfiles/hyprland/.local/bin/pinentry-fuzzel2
-rwxr-xr-xdotfiles/hyprland/.local/bin/power-menu45
-rwxr-xr-xdotfiles/hyprland/.local/bin/screenshot23
-rwxr-xr-xdotfiles/hyprland/.local/bin/set-theme18
-rwxr-xr-xdotfiles/hyprland/.local/bin/start-hyprland11
-rwxr-xr-xdotfiles/hyprland/.local/bin/toggle-scratchpad11
-rwxr-xr-xdotfiles/hyprland/.local/bin/waybar-disk7
-rwxr-xr-xdotfiles/hyprland/.local/bin/waybar-layout16
-rwxr-xr-xdotfiles/hyprland/.local/bin/waybar-netspeed2
-rw-r--r--dotfiles/hyprland/.local/share/applications/android-file-transfer.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/arandr.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/avahi-discover.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/blueman-adapters.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/blueman-manager.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/bssh.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/bvnc.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/caffeine.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/calibre-ebook-edit.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/calibre-ebook-viewer.desktop12
-rw-r--r--dotfiles/hyprland/.local/share/applications/calibre-lrfviewer.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/cmake-gui.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/compton.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/conky.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/cups.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/dwm.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/emacs-mail.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/emacsclient-mail.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/file.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/foot-server.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/footclient.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/gammastep-indicator.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/gammastep.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/gcr-prompter.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/gcr-viewer.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/geoclue-demo-agent.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/geoclue-where-am-i.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/gkbd-keyboard-display.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/google-chrome.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/google-maps-geo-handler.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/gtk-lshw.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/htop.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/hy3-util.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/hyprland.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/img.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/insync-helper.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/ipython.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/jconsole.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/jshell.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/jvisualvm.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/libreoffice-base.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/lock-screen.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/logout.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/lstopo.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/lxappearance.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/mail.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/nautilus-autorun-software.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/nm-applet.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/nm-connection-editor.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/nsxiv.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/openstreetmap-geo-handler.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.flameshot.Flameshot.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.freedesktop.Xwayland.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.gnome.Zenity.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt5.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.kde.polkit-kde-authentication-agent-1.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-cb.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-djvu.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-pdf-mupdf.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/pdf.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/picom.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/proton-bridge.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/qt5ct.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/qt6ct.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/qv4l2.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/qvidcap.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/ranger.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/reboot.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/redshift-gtk.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/redshift.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/rofi-theme-selector.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/rofi.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/shutdown.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/suspend.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/text.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/thunar-bulk-rename.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/thunar-settings.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/thunar.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/torbrowser-settings.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/user-dirs-update-gtk.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/vim.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/wheelmap-geo-handler.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/xcolor.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/xdg-desktop-portal-gtk.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/xdvi.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/xfce4-about.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/xgps.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/applications/xgpsspeed.desktop2
-rw-r--r--dotfiles/hyprland/.local/share/easyeffects/output/dt770-pro-250-harman-eq.json199
-rw-r--r--dotfiles/hyprland/.local/share/easyeffects/output/pixel-buds-pro-2-harman-eq.json219
-rw-r--r--dotfiles/hyprland/.local/share/easyeffects/output/pxc-550-ii-harman-eq.json219
-rw-r--r--dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh26
-rw-r--r--dotfiles/hyprland/.profile.d/hyprland.sh14
121 files changed, 1215 insertions, 191 deletions
diff --git a/dotfiles/hyprland/.config/easyeffectsrc b/dotfiles/hyprland/.config/easyeffectsrc
new file mode 100644
index 0000000..a4cbf66
--- /dev/null
+++ b/dotfiles/hyprland/.config/easyeffectsrc
@@ -0,0 +1,2 @@
+[UiSettings]
+ColorScheme=BreezeDark
diff --git a/dotfiles/hyprland/.config/foot/foot.ini b/dotfiles/hyprland/.config/foot/foot.ini
index 8fe19b3..4e9681c 100644
--- a/dotfiles/hyprland/.config/foot/foot.ini
+++ b/dotfiles/hyprland/.config/foot/foot.ini
@@ -1,5 +1,5 @@
-# foot terminal configuration - Dupre theme
-# Warm, earthy colors from dupre-theme.el
+# foot terminal configuration - Hudson theme
+# Tomorrow Night + Goldenrod accent
[main]
term=xterm-256color
@@ -10,29 +10,29 @@ pad=8x8
lines=10000
[colors]
-# Dupre theme colors (from Emacs dupre-theme.el)
-background=151311
-foreground=f0fef0
+# Hudson theme - Tomorrow Night + Goldenrod accent
+background=222222
+foreground=eeeeee
-# Regular colors (0-7) - dupre palette
-regular0=252321 # black (dupre-bg+1)
-regular1=d47c59 # red (dupre-red)
-regular2=a4ac64 # green (dupre-green)
-regular3=d7af5f # yellow (dupre-yellow)
-regular4=67809c # blue (dupre-blue)
+# Regular colors (0-7)
+regular0=222222 # black
+regular1=cc6666 # red
+regular2=b5bd68 # green
+regular3=f0c674 # yellow
+regular4=81a2be # blue
regular5=b294bb # magenta
-regular6=8a9496 # cyan (dupre-steel)
-regular7=d0cbc0 # white (dupre-gray+2)
+regular6=8abeb7 # cyan
+regular7=c5c8c6 # white
# Bright colors (8-15)
-bright0=474544 # bright black (dupre-bg+2)
-bright1=edb08f # bright red (dupre-red+1)
-bright2=ccc768 # bright green (dupre-green+1)
-bright3=ffd75f # bright yellow (dupre-yellow+1)
-bright4=b2c3cc # bright blue (dupre-blue+1)
+bright0=444444 # bright black
+bright1=d54e53 # bright red
+bright2=b9ca4a # bright green
+bright3=e0b040 # bright yellow (adjusted for gold)
+bright4=7aa6da # bright blue
bright5=c397d8 # bright magenta
-bright6=acb0b3 # bright cyan (dupre-steel+1)
-bright7=f0fef0 # bright white (dupre-fg)
+bright6=70c0b1 # bright cyan
+bright7=eeeeee # bright white
-# Cursor: muted gold on dark
-cursor=151311 d7af5f
+# Cursor: goldenrod on dark
+cursor=222222 daa520
diff --git a/dotfiles/hyprland/.config/fuzzel/fuzzel.ini b/dotfiles/hyprland/.config/fuzzel/fuzzel.ini
index 0efda0d..39dabc0 100644
--- a/dotfiles/hyprland/.config/fuzzel/fuzzel.ini
+++ b/dotfiles/hyprland/.config/fuzzel/fuzzel.ini
@@ -1,5 +1,5 @@
-# Fuzzel config - matching waybar DWM-inspired theme
-# Colors from waybar: bg=#222222, cpu=#bbbbbb, clock=#eeeeee, accent=#daa520
+# Fuzzel config - Hudson theme
+# Tomorrow Night + Goldenrod accent
[main]
# size is in points (fontconfig syntax)
diff --git a/dotfiles/hyprland/.config/gammastep/config.ini b/dotfiles/hyprland/.config/gammastep/config.ini
index f50a701..bbb15ee 100644
--- a/dotfiles/hyprland/.config/gammastep/config.ini
+++ b/dotfiles/hyprland/.config/gammastep/config.ini
@@ -1,25 +1,8 @@
-[gammastep]
-; Color temperature in Kelvin (same as redshift)
+[general]
temp-day=6500
temp-night=4500
-
-; Brightness (1.0 = full, 0.8 = 20% dimmed)
brightness-day=1.0
brightness-night=1.0
-
-; Gamma correction
gamma=1.0
-
-; Fade between day/night
fade=1
-
-; Wayland adjustment method (not randr)
-adjustment-method=wayland
-
-; Location for sunrise/sunset calculation
-location-provider=manual
-
-[manual]
-; New Orleans, LA
-lat=29.951065
-lon=-90.071533
+location-provider=geoclue2
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
index 0e582d3..3eae5b6 100644
--- a/dotfiles/hyprland/.config/hypr/hyprland.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprland.conf
@@ -10,16 +10,29 @@ monitor=,preferred,auto,auto
# ============================================================================
# Startup Applications
# ============================================================================
-exec-once = hyprpm reload
-exec-once = waybar
+# Portal and D-Bus setup FIRST (other apps depend on these)
+exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = systemctl --user start xdg-desktop-portal-hyprland xdg-desktop-portal
+
+# Core services
+exec-once = hyprpm reload && sleep 1 && hyprctl dismissnotify -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 (after portal is ready)
exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/trondheim-norway.jpg
-exec-once = dunst
-exec-once = hypridle
-exec-once = gammastep
+exec-once = waybar > ~/.local/var/log/waybar-$(date +%Y-%m-%d-%H%M%S).log 2>&1
+exec-once = set-theme "$(cat ~/.config/current-theme 2>/dev/null || echo hudson)"
+
+# Background services
+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 = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh
-exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = easyeffects --gapplication-service
exec-once = mpd
+
+# Apps that can start later
exec-once = signal-desktop --start-in-tray --ozone-platform=wayland
exec-once = protonmail-bridge --no-window
exec-once = insync start
@@ -28,6 +41,7 @@ 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
@@ -61,18 +75,18 @@ decoration {
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
- animation = specialWorkspace, 1, 3, default, slidevert
+ 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 = slave
+ new_status = master
mfact = 0.55
}
@@ -99,6 +113,14 @@ input {
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
+ focus_on_activate = true
+}
+
+# ============================================================================
+# Debug (temporary - disable when stable)
+# ============================================================================
+debug {
+ disable_logs = false
}
# ============================================================================
@@ -109,6 +131,27 @@ xwayland {
}
# ============================================================================
+# Plugins
+# ============================================================================
+plugin {
+ hy3 {
+ tabs {
+ col.active = rgba(444444ff)
+ col.active.text = rgba(bbbbbbff)
+ col.active.border = rgba(daa520ff)
+ col.focused = rgba(444444ff)
+ col.focused.text = rgba(bbbbbbff)
+ col.focused.border = rgba(daa520ff)
+ col.inactive = rgba(333333ff)
+ col.inactive.text = rgba(888888ff)
+ col.inactive.border = rgba(333333ff)
+ col.urgent = rgba(cc6666ff)
+ col.locked = rgba(8abeb7ff)
+ }
+ }
+}
+
+# ============================================================================
# Window Rules (Hyprland 0.53+ syntax: match:CONDITION, RULE)
# ============================================================================
# Floating windows (from DWM rules)
@@ -129,12 +172,12 @@ bind = $mod, T, exec, foot
bind = $mod, E, exec, emacsclient -c -a "" || emacs
bind = $mod, W, exec, $BROWSER
bind = $mod, P, exec, fuzzel
+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 = CTRL ALT, F, exec, thunar
bind = $mod, V, exec, virtualbox
bind = $mod SHIFT, L, exec, calibre
bind = $mod SHIFT, R, exec, shortwave
@@ -172,7 +215,7 @@ bind = $mod, D, layoutmsg, removemaster
# Focus mode (xtra-dispatchers plugin)
# O = "Only this window" / "bring back Others" / "close Others"
bind = $mod, O, exec, hyprctl dispatch plugin:xtd:throwunfocused 10
-bind = $mod SHIFT, O, exec, hyprctl dispatch plugin:xtd:bringallfrom 10
+bind = $mod SHIFT, O, exec, focus-restore
bind = $mod CTRL, O, exec, hyprctl dispatch plugin:xtd:closeunfocused
# Gaps (from DWM)
@@ -226,19 +269,17 @@ bind = $mod SHIFT, PERIOD, movewindow, mon:+1
# Workspace rules (auto-launch apps when workspace first accessed)
workspace = special:term, on-created-empty:foot --app-id foot-term tmux
workspace = special:audio, on-created-empty:foot --app-id foot-audio pulsemixer
-workspace = special:monitor, on-created-empty:foot --app-id foot-monitor gotop
+workspace = special:monitor, on-created-empty:foot --app-id foot-monitor monitor-dashboard
workspace = special:music, on-created-empty:foot --app-id foot-music ncmpcpp
-workspace = special:files, on-created-empty:foot --app-id foot-files ranger
-workspace = special:htop, on-created-empty:foot --app-id foot-htop htop
workspace = special:network, on-created-empty:foot --app-id foot-network nmtui
+workspace = special:effects, on-created-empty:easyeffects
# Keybindings (single bind per scratchpad - just toggle visibility)
bind = $mod SHIFT, RETURN, togglespecialworkspace, term
bind = $mod, A, togglespecialworkspace, audio
bind = $mod, M, togglespecialworkspace, monitor
bind = $mod, SLASH, togglespecialworkspace, music
-bind = $mod, F, togglespecialworkspace, files
-bind = $mod SHIFT, H, togglespecialworkspace, htop
+bind = $mod SHIFT, A, togglespecialworkspace, effects
# Window rules (using app-id/class matching, Hyprland 0.53+ syntax)
# Terminal scratchpad
@@ -261,21 +302,16 @@ windowrule = match:class ^(foot-music)$, float on
windowrule = match:class ^(foot-music)$, size (monitor_w*0.6) (monitor_h*0.6)
windowrule = match:class ^(foot-music)$, center on
-# File manager
-windowrule = match:class ^(foot-files)$, float on
-windowrule = match:class ^(foot-files)$, size (monitor_w*0.6) (monitor_h*0.6)
-windowrule = match:class ^(foot-files)$, center on
-
-# Htop
-windowrule = match:class ^(foot-htop)$, float on
-windowrule = match:class ^(foot-htop)$, size (monitor_w*0.6) (monitor_h*0.6)
-windowrule = match:class ^(foot-htop)$, center on
-
# Network manager
windowrule = match:class ^(foot-network)$, float on
windowrule = match:class ^(foot-network)$, size (monitor_w*0.6) (monitor_h*0.6)
windowrule = match:class ^(foot-network)$, center on
+# EasyEffects
+windowrule = match:class ^(Easy Effects)$, float on
+windowrule = match:class ^(Easy Effects)$, size (monitor_w*0.6) (monitor_h*0.6)
+windowrule = match:class ^(Easy Effects)$, center on
+
# Calculator (not a scratchpad, just launches app)
bind = $mod, X, exec, qalculate-gtk
bind = $mod, C, exec, hyprpicker -a
@@ -293,9 +329,9 @@ bind = CTRL ALT, SPACE, exec, amixer set Capture toggle && amixer get Capture |
# Bluetooth (from DWM and sxhkdrc)
bind = $mod SHIFT, B, exec, blueman-manager
-# Screenshots (grim + slurp + satty for annotation)
-bind = $mod, S, exec, grim -g "$(slurp)" - | satty --filename - --output-filename ~/pictures/screenshots/$(date +%Y.%m.%d-%H%M%S).png
-bind = , Print, exec, grim - | satty --filename - --output-filename ~/pictures/screenshots/$(date +%Y.%m.%d-%H%M%S).png
+# Screenshots (grim + slurp + fuzzel menu)
+bind = $mod, S, exec, screenshot region
+bind = $mod, Print, exec, screenshot fullscreen
# Lock screen (from sxhkdrc: super+Escape)
bind = $mod, ESCAPE, exec, hyprlock
diff --git a/dotfiles/hyprland/.config/hypr/hyprlock.conf b/dotfiles/hyprland/.config/hypr/hyprlock.conf
index fd85651..f9c08bb 100644
--- a/dotfiles/hyprland/.config/hypr/hyprlock.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprlock.conf
@@ -1,5 +1,5 @@
-# Hyprlock configuration - Dupre theme
-# Warm, earthy colors from dupre-theme.el
+# Hyprlock configuration - Hudson theme
+# Tomorrow Night + Goldenrod accent
general {
disable_loading_bar = false
@@ -25,7 +25,7 @@ label {
monitor =
text = $TIME12
text_align = center
- color = rgb(969385)
+ color = rgb(bbbbbb)
font_size = 64
font_family = BerkeleyMono Nerd Font
position = 0, 15%
@@ -40,7 +40,7 @@ image {
size = 120
rounding = -1
border_size = 3
- border_color = rgb(d7af5f)
+ border_color = rgb(daa520)
position = 0, 0%
halign = center
valign = center
@@ -54,7 +54,7 @@ label {
monitor =
text = $USER
text_align = center
- color = rgb(d7af5f)
+ color = rgb(daa520)
font_size = 36
font_family = BerkeleyMono Nerd Font
position = 0, -7%
@@ -71,19 +71,19 @@ input-field {
dots_spacing = 0.15
dots_center = true
dots_rounding = -1
- outer_color = rgb(151311)
- inner_color = rgb(151311)
- font_color = rgb(969385)
+ outer_color = rgb(222222)
+ inner_color = rgb(222222)
+ font_color = rgb(bbbbbb)
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)
+ check_color = rgb(daa520)
+ fail_color = rgb(d54e53)
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
fail_transition = 300
- capslock_color = rgb(ccc768)
+ capslock_color = rgb(e0b040)
numlock_color = -1
bothlock_color = -1
invert_numlock = false
diff --git a/dotfiles/hyprland/.config/themes/dupre/Xresources b/dotfiles/hyprland/.config/themes/dupre/Xresources
index be8f7f4..1646b87 100644
--- a/dotfiles/hyprland/.config/themes/dupre/Xresources
+++ b/dotfiles/hyprland/.config/themes/dupre/Xresources
@@ -4,8 +4,8 @@
!! X Font Settings
Xft.dpi: 109
-Xcursor.size: 32
-Xcursor.theme: Vimix-white-cursors
+Xcursor.size: 24
+Xcursor.theme: Bibata-Modern-Ice
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
diff --git a/dotfiles/hyprland/.config/themes/dupre/dunstrc b/dotfiles/hyprland/.config/themes/dupre/dunstrc
index 12ffac0..0847fdf 100644
--- a/dotfiles/hyprland/.config/themes/dupre/dunstrc
+++ b/dotfiles/hyprland/.config/themes/dupre/dunstrc
@@ -13,7 +13,7 @@ notification_limit = 5
gap_size = 12
padding = 12
horizontal_padding = 20
-frame_width = 2
+frame_width = 0
sort = no
corner_radius = 10
@@ -27,7 +27,7 @@ frame_color = "#d7af5f"
highlight = "#d7af5f, #ccc768"
# Text (size in points, Pango syntax)
-font = BerkeleyMono Nerd Font 13
+font = BerkeleyMono Nerd Font 10
markup = full
format = "<small>%a</small>\n<b>%s</b>\n%b"
alignment = left
diff --git a/dotfiles/hyprland/.config/themes/dupre/waybar.css b/dotfiles/hyprland/.config/themes/dupre/waybar.css
index e83f851..18ba0f1 100644
--- a/dotfiles/hyprland/.config/themes/dupre/waybar.css
+++ b/dotfiles/hyprland/.config/themes/dupre/waybar.css
@@ -49,7 +49,7 @@ window#waybar {
#cpu,
#temperature,
#memory,
-#disk,
+#custom-disk,
#custom-netspeed,
#battery,
#wireplumber,
@@ -73,7 +73,7 @@ window#waybar {
#cpu:hover,
#temperature:hover,
#memory:hover,
-#disk:hover,
+#custom-disk:hover,
#custom-netspeed:hover,
#wireplumber:hover,
#sysmonitor:hover,
@@ -90,8 +90,24 @@ window#waybar {
color: #969385;
}
-#wireplumber.muted {
- color: #58574e;
+#custom-netspeed.disconnected {
+ color: #d47c59;
+}
+
+#temperature.warning {
+ color: #d7af5f;
+}
+
+#temperature.critical {
+ color: #d47c59;
+}
+
+#custom-disk.warning {
+ color: #d7af5f;
+}
+
+#custom-disk.critical {
+ color: #d47c59;
}
#battery.warning {
diff --git a/dotfiles/hyprland/.config/themes/hudson/Xresources b/dotfiles/hyprland/.config/themes/hudson/Xresources
index 96e4803..4b35809 100644
--- a/dotfiles/hyprland/.config/themes/hudson/Xresources
+++ b/dotfiles/hyprland/.config/themes/hudson/Xresources
@@ -10,8 +10,8 @@ Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
-Xcursor.size: 32
-Xcursor.theme: Vimix-white-cursors
+Xcursor.size: 24
+Xcursor.theme: Bibata-Modern-Ice
!! Emacs
Emacs*toolBar: 0
diff --git a/dotfiles/hyprland/.config/themes/hudson/dunstrc b/dotfiles/hyprland/.config/themes/hudson/dunstrc
index 2cbf0e6..f27bd33 100644
--- a/dotfiles/hyprland/.config/themes/hudson/dunstrc
+++ b/dotfiles/hyprland/.config/themes/hudson/dunstrc
@@ -13,7 +13,7 @@ notification_limit = 5
gap_size = 12
padding = 12
horizontal_padding = 20
-frame_width = 2
+frame_width = 0
sort = no
corner_radius = 10
@@ -27,7 +27,7 @@ frame_color = "#daa520"
highlight = "#daa520, #f0c674"
# Text (size in points, Pango syntax)
-font = BerkeleyMono Nerd Font 13
+font = BerkeleyMono Nerd Font 10
markup = full
format = "<small>%a</small>\n<b>%s</b>\n%b"
alignment = left
diff --git a/dotfiles/hyprland/.config/themes/hudson/waybar.css b/dotfiles/hyprland/.config/themes/hudson/waybar.css
index 9056529..299f1c2 100644
--- a/dotfiles/hyprland/.config/themes/hudson/waybar.css
+++ b/dotfiles/hyprland/.config/themes/hudson/waybar.css
@@ -49,7 +49,7 @@ window#waybar {
#cpu,
#temperature,
#memory,
-#disk,
+#custom-disk,
#custom-netspeed,
#battery,
#wireplumber,
@@ -73,7 +73,7 @@ window#waybar {
#cpu:hover,
#temperature:hover,
#memory:hover,
-#disk:hover,
+#custom-disk:hover,
#custom-netspeed:hover,
#wireplumber:hover,
#sysmonitor:hover,
@@ -90,8 +90,24 @@ window#waybar {
color: #bbbbbb;
}
-#wireplumber.muted {
- color: #666666;
+#custom-netspeed.disconnected {
+ color: #ff5858;
+}
+
+#temperature.warning {
+ color: #daa520;
+}
+
+#temperature.critical {
+ color: #ff5858;
+}
+
+#custom-disk.warning {
+ color: #daa520;
+}
+
+#custom-disk.critical {
+ color: #ff5858;
}
#battery.warning {
diff --git a/dotfiles/hyprland/.config/waybar/config b/dotfiles/hyprland/.config/waybar/config
index 5b9879e..66e318b 100644
--- a/dotfiles/hyprland/.config/waybar/config
+++ b/dotfiles/hyprland/.config/waybar/config
@@ -1,7 +1,6 @@
{
"layer": "top",
"position": "top",
- "height": 30,
"spacing": 4,
"margin-top": 6,
"margin-left": 10,
@@ -24,11 +23,12 @@
"group/sysmonitor": {
"orientation": "horizontal",
+ "swap-icon-label": false,
"modules": [
"cpu",
"temperature",
"memory",
- "disk",
+ "custom/disk",
"battery"
]
},
@@ -62,6 +62,7 @@
"interval": 10,
"hwmon-path-abs": "/sys/devices/pci0000:00/0000:00:18.3/hwmon",
"input-filename": "temp1_input",
+ "warning-threshold": 70,
"critical-threshold": 80,
"format": "<span size='large'>󰔏</span> {temperatureC}°C",
"format-critical": "<span size='large'>󰸁</span> {temperatureC}°C",
@@ -74,10 +75,11 @@
"on-click": "toggle-scratchpad monitor"
},
- "disk": {
+ "custom/disk": {
+ "exec": "waybar-disk",
+ "return-type": "json",
"interval": 30,
- "format": "<span size='large'>󰆼</span> {percentage_used}%",
- "path": "/",
+ "format": "<span size='large'>󰆼</span> {}",
"on-click": "toggle-scratchpad monitor"
},
diff --git a/dotfiles/hyprland/.config/waybar/style.css b/dotfiles/hyprland/.config/waybar/style.css
index 03b11b6..299f1c2 100644
--- a/dotfiles/hyprland/.config/waybar/style.css
+++ b/dotfiles/hyprland/.config/waybar/style.css
@@ -1,5 +1,5 @@
-/* Waybar style - Dupre theme */
-/* Warm, earthy colors from dupre-theme.el */
+/* Waybar style - Hudson theme */
+/* Tomorrow Night + Goldenrod accent */
* {
border: none;
@@ -22,53 +22,48 @@ window#waybar {
padding: 0.5rem;
margin: 0.2rem;
background-color: transparent;
- color: #969385;
+ color: #bbbbbb;
border-radius: 1rem;
transition: all 0.3s ease;
}
#workspaces button.active {
- background: #d7af5f;
- color: #151311;
+ background: #daa520;
+ color: #222222;
border-radius: 1rem;
}
#workspaces button.urgent {
- background-color: rgba(212, 124, 89, 0.4);
+ background-color: rgba(255, 88, 88, 0.4);
}
.modules-right, .modules-left {
- background-color: #151311;
+ background-color: #222222;
border-radius: 1rem;
padding: 0.2rem 0.6rem;
margin: 0.3rem;
- border: 0.095rem solid #d7af5f;
+ border: 0.095rem solid #daa520;
box-shadow: 0rem 0.2rem 0.4rem rgba(0,0,0,0.5);
}
#cpu,
#temperature,
#memory,
-#disk,
+#custom-disk,
#custom-netspeed,
#battery,
#wireplumber,
-#idle_inhibitor,
#tray,
#clock,
#custom-layout,
#window {
padding: 0.4rem;
margin: 0.3rem;
- color: #969385;
+ color: #bbbbbb;
background-color: transparent;
border-radius: 1rem;
}
-#idle_inhibitor {
- margin-right: 0.8rem;
-}
-
#sysmonitor {
margin: 0.3rem;
background-color: transparent;
@@ -78,33 +73,49 @@ window#waybar {
#cpu:hover,
#temperature:hover,
#memory:hover,
-#disk:hover,
+#custom-disk:hover,
#custom-netspeed:hover,
#wireplumber:hover,
#sysmonitor:hover,
#custom-layout:hover {
- background-color: #474544;
+ background-color: #444444;
border-radius: 1rem;
}
#clock {
- color: #f0fef0;
+ color: #eeeeee;
}
#wireplumber {
- color: #969385;
+ color: #bbbbbb;
+}
+
+#custom-netspeed.disconnected {
+ color: #ff5858;
+}
+
+#temperature.warning {
+ color: #daa520;
+}
+
+#temperature.critical {
+ color: #ff5858;
+}
+
+#custom-disk.warning {
+ color: #daa520;
}
-#wireplumber.muted {
- color: #58574e;
+#custom-disk.critical {
+ color: #ff5858;
}
#battery.warning {
- color: #d7af5f;
+ color: #daa520;
}
#battery.critical {
- color: #d47c59;
+ color: #ff5858;
}
#tray > .passive {
@@ -113,5 +124,5 @@ window#waybar {
#tray > .needs-attention {
-gtk-icon-effect: highlight;
- background-color: #d7af5f;
+ background-color: #daa520;
}
diff --git a/dotfiles/hyprland/.config/waypaper/config.ini b/dotfiles/hyprland/.config/waypaper/config.ini
new file mode 100644
index 0000000..66652ed
--- /dev/null
+++ b/dotfiles/hyprland/.config/waypaper/config.ini
@@ -0,0 +1,27 @@
+[Settings]
+language = en
+folder = ~/pictures/wallpaper
+monitors = All
+wallpaper = ~/pictures/wallpaper/trondheim-norway.jpg
+show_path_in_tooltip = True
+backend = swww
+fill = fill
+sort = name
+color = #ffffff
+subfolders = False
+all_subfolders = False
+show_hidden = False
+show_gifs_only = False
+zen_mode = False
+post_command =
+number_of_columns = 3
+swww_transition_type = simple
+swww_transition_step = 63
+swww_transition_angle = 0
+swww_transition_duration = 2
+swww_transition_fps = 60
+mpvpaper_sound = False
+mpvpaper_options =
+use_xdg_state = False
+stylesheet = /home/cjennings/.config/waypaper/style.css
+
diff --git a/dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf b/dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf
new file mode 100644
index 0000000..9cc87a2
--- /dev/null
+++ b/dotfiles/hyprland/.config/xdg-desktop-portal/portals.conf
@@ -0,0 +1,3 @@
+[preferred]
+default=hyprland;gtk
+org.freedesktop.impl.portal.Settings=none
diff --git a/dotfiles/hyprland/.local/bin/focus-restore b/dotfiles/hyprland/.local/bin/focus-restore
new file mode 100755
index 0000000..7f87390
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/focus-restore
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Restore unfocused windows from workspace 10 without disrupting master position.
+# Records the focused window, brings all back, then swaps it back to master.
+
+FOCUSED=$(hyprctl activewindow -j | jq -r '.address')
+hyprctl dispatch plugin:xtd:bringallfrom 10
+sleep 0.1
+hyprctl dispatch focuswindow "address:$FOCUSED"
+hyprctl dispatch layoutmsg swapwithmaster master
diff --git a/dotfiles/hyprland/.local/bin/monitor-dashboard b/dotfiles/hyprland/.local/bin/monitor-dashboard
new file mode 100755
index 0000000..9236d20
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/monitor-dashboard
@@ -0,0 +1,37 @@
+#!/bin/sh
+# monitor-dashboard - tmux session with system monitoring tools
+# Each tool gets its own window for full screen real estate
+
+SESSION="monitor"
+
+# Check if system has a battery
+has_battery() {
+ [ -d /sys/class/power_supply/BAT0 ] || [ -d /sys/class/power_supply/BAT1 ]
+}
+
+# Attach to existing session or create new one
+if tmux has-session -t "$SESSION" 2>/dev/null; then
+ exec tmux attach-session -t "$SESSION"
+fi
+
+# Create new session with btop in first window
+tmux new-session -d -s "$SESSION" -n btop btop
+
+# Add windows for other monitoring tools (grouped logically)
+# CPU/GPU
+tmux new-window -t "$SESSION" -n s-tui s-tui
+tmux new-window -t "$SESSION" -n nvtop nvtop
+# Disk
+tmux new-window -t "$SESSION" -n duf "watch --color -n 60 duf"
+# Network
+tmux new-window -t "$SESSION" -n bandwhich "sudo bandwhich"
+tmux new-window -t "$SESSION" -n wavemon wavemon
+# Power (laptop only)
+if has_battery; then
+ tmux new-window -t "$SESSION" -n powertop "sudo powertop"
+fi
+
+# Start on btop window
+tmux select-window -t "$SESSION:btop"
+
+exec tmux attach-session -t "$SESSION"
diff --git a/dotfiles/hyprland/.local/bin/pinentry-fuzzel b/dotfiles/hyprland/.local/bin/pinentry-fuzzel
index 4cbe6b7..5c64968 100755
--- a/dotfiles/hyprland/.local/bin/pinentry-fuzzel
+++ b/dotfiles/hyprland/.local/bin/pinentry-fuzzel
@@ -83,7 +83,7 @@ while read cmd rest; do
else
LABEL="reenter: "
fi
- PASS=$(fuzzel --prompt "$LABEL" --width 25 --lines 0 --cache /dev/null --password --dmenu)
+ PASS=$(fuzzel --prompt "$LABEL" --width 35 --lines 0 --cache /dev/null --password --dmenu --border-color=d47c59ff)
if [ -z "$PASS" ]; then
# User cancelled - return error to GPG
rm -f "$LASTFILE"
diff --git a/dotfiles/hyprland/.local/bin/power-menu b/dotfiles/hyprland/.local/bin/power-menu
deleted file mode 100755
index 878a17b..0000000
--- a/dotfiles/hyprland/.local/bin/power-menu
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-# Power menu using wofi
-# Dupre theme with Nerd Font icons
-
-options="󰌾\n󰍃\n󰒲\n󰖔\n󰜉\n󰐥"
-
-selected=$(echo -e "$options" | wofi --dmenu \
- --cache-file /dev/null \
- --prompt "" \
- --hide-scroll \
- --hide-search \
- --gtk-dark \
- --layer overlay \
- --width 700 \
- --height 700 \
- --columns 3 \
- --lines 2 \
- --style ~/.config/wofi/power-menu.css \
- --conf /dev/null)
-
-case "$selected" in
- "󰌾")
- hyprlock
- ;;
- "󰍃")
- notify-send "Power Menu" "Logout disabled for testing"
- # hyprctl dispatch exit
- ;;
- "󰒲")
- notify-send "Power Menu" "Suspend disabled for testing"
- # systemctl suspend
- ;;
- "󰖔")
- notify-send "Power Menu" "Hibernate disabled for testing"
- # systemctl hibernate
- ;;
- "󰜉")
- notify-send "Power Menu" "Reboot disabled for testing"
- # systemctl reboot
- ;;
- "󰐥")
- notify-send "Power Menu" "Shutdown disabled for testing"
- # systemctl poweroff
- ;;
-esac
diff --git a/dotfiles/hyprland/.local/bin/screenshot b/dotfiles/hyprland/.local/bin/screenshot
new file mode 100755
index 0000000..45925c6
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/screenshot
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Screenshot tool with fuzzel menu
+# Usage: screenshot [region|fullscreen]
+
+DIR="$HOME/pictures/screenshots"
+mkdir -p "$DIR"
+FILE="$DIR/$(date +%Y-%m-%d_%H%M%S).png"
+
+# Capture
+case "${1:-region}" in
+ region) grim -g "$(slurp)" "$FILE" || exit 1 ;;
+ fullscreen) grim "$FILE" || exit 1 ;;
+esac
+
+# Menu
+CHOICE=$(printf '󰅍 Copy Path\n󰋩 Copy Image\n󰏫 Annotate' | \
+ fuzzel --dmenu --prompt "Screenshot: " --width 20 --lines 3)
+
+case "$CHOICE" in
+ *"Copy Path"*) echo -n "$FILE" | wl-copy --type text/plain ;;
+ *"Copy Image"*) wl-copy --type image/png < "$FILE" ;;
+ *"Annotate"*) satty --filename "$FILE" --output-filename "$FILE" --copy-command wl-copy ;;
+esac
diff --git a/dotfiles/hyprland/.local/bin/set-theme b/dotfiles/hyprland/.local/bin/set-theme
index e95b27b..9bbcbd4 100755
--- a/dotfiles/hyprland/.local/bin/set-theme
+++ b/dotfiles/hyprland/.local/bin/set-theme
@@ -56,8 +56,13 @@ apply_theme() {
# hy3 tab bar (monocle mode)
hyprctl keyword plugin:hy3:tabs:col.active "rgba(474544ff)"
hyprctl keyword plugin:hy3:tabs:col.active.text "rgba(969385ff)"
- hyprctl keyword plugin:hy3:tabs:col.inactive "rgba(d0cbc0ff)"
- hyprctl keyword plugin:hy3:tabs:col.inactive.text "rgba(d0cbc0ff)"
+ hyprctl keyword plugin:hy3:tabs:col.active.border "rgba(d7af5fff)"
+ hyprctl keyword plugin:hy3:tabs:col.focused "rgba(474544ff)"
+ hyprctl keyword plugin:hy3:tabs:col.focused.text "rgba(969385ff)"
+ hyprctl keyword plugin:hy3:tabs:col.focused.border "rgba(d7af5fff)"
+ hyprctl keyword plugin:hy3:tabs:col.inactive "rgba(2a2725ff)"
+ hyprctl keyword plugin:hy3:tabs:col.inactive.text "rgba(6c6a60ff)"
+ hyprctl keyword plugin:hy3:tabs:col.inactive.border "rgba(2a2725ff)"
hyprctl keyword plugin:hy3:tabs:col.urgent "rgba(d47c59ff)"
hyprctl keyword plugin:hy3:tabs:col.locked "rgba(8a9496ff)"
;;
@@ -68,8 +73,13 @@ apply_theme() {
# hy3 tab bar (monocle mode)
hyprctl keyword plugin:hy3:tabs:col.active "rgba(444444ff)"
hyprctl keyword plugin:hy3:tabs:col.active.text "rgba(bbbbbbff)"
- hyprctl keyword plugin:hy3:tabs:col.inactive "rgba(c5c8c6ff)"
- hyprctl keyword plugin:hy3:tabs:col.inactive.text "rgba(c5c8c6ff)"
+ hyprctl keyword plugin:hy3:tabs:col.active.border "rgba(daa520ff)"
+ hyprctl keyword plugin:hy3:tabs:col.focused "rgba(444444ff)"
+ hyprctl keyword plugin:hy3:tabs:col.focused.text "rgba(bbbbbbff)"
+ hyprctl keyword plugin:hy3:tabs:col.focused.border "rgba(daa520ff)"
+ hyprctl keyword plugin:hy3:tabs:col.inactive "rgba(333333ff)"
+ hyprctl keyword plugin:hy3:tabs:col.inactive.text "rgba(888888ff)"
+ hyprctl keyword plugin:hy3:tabs:col.inactive.border "rgba(333333ff)"
hyprctl keyword plugin:hy3:tabs:col.urgent "rgba(cc6666ff)"
hyprctl keyword plugin:hy3:tabs:col.locked "rgba(8abeb7ff)"
;;
diff --git a/dotfiles/hyprland/.local/bin/start-hyprland b/dotfiles/hyprland/.local/bin/start-hyprland
new file mode 100755
index 0000000..a5d191d
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/start-hyprland
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Wrapper to launch Hyprland with persistent logging
+# Shadows /usr/bin/start-hyprland when ~/.local/bin is in PATH
+
+LOG_DIR="$HOME/.local/var/log"
+TIMESTAMP=$(date +%Y-%m-%d-%H%M%S)
+LOG_FILE="$LOG_DIR/hyprland-$TIMESTAMP.log"
+
+mkdir -p "$LOG_DIR"
+
+exec /usr/bin/start-hyprland "$@" > "$LOG_FILE" 2>&1
diff --git a/dotfiles/hyprland/.local/bin/toggle-scratchpad b/dotfiles/hyprland/.local/bin/toggle-scratchpad
index bb10ef7..b3da6b4 100755
--- a/dotfiles/hyprland/.local/bin/toggle-scratchpad
+++ b/dotfiles/hyprland/.local/bin/toggle-scratchpad
@@ -9,6 +9,17 @@ if [ -z "$NAME" ]; then
exit 1
fi
+# Auto-detect current Hyprland socket if env var is stale
+if ! hyprctl version >/dev/null 2>&1; then
+ # Find the most recent Hyprland instance with a socket
+ for dir in /run/user/"$(id -u)"/hypr/*/; do
+ if [ -S "${dir}.socket.sock" ]; then
+ export HYPRLAND_INSTANCE_SIGNATURE="$(basename "$dir")"
+ break
+ fi
+ done
+fi
+
STATEFILE="/tmp/scratchpad-$NAME-open"
NOW=$(date +%s)
diff --git a/dotfiles/hyprland/.local/bin/waybar-disk b/dotfiles/hyprland/.local/bin/waybar-disk
new file mode 100755
index 0000000..6050653
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/waybar-disk
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Waybar disk usage module with warning/critical states
+PCT=$(df --output=pcent / | tail -1 | tr -d ' %')
+CLASS=""
+[ "$PCT" -ge 80 ] && CLASS="warning"
+[ "$PCT" -ge 90 ] && CLASS="critical"
+printf '{"text": "%s%%", "class": "%s", "tooltip": "Root: %s%% used"}\n' "$PCT" "$CLASS" "$PCT"
diff --git a/dotfiles/hyprland/.local/bin/waybar-layout b/dotfiles/hyprland/.local/bin/waybar-layout
index 6c45877..62470aa 100755
--- a/dotfiles/hyprland/.local/bin/waybar-layout
+++ b/dotfiles/hyprland/.local/bin/waybar-layout
@@ -3,17 +3,17 @@
# Shows current layout with nerd font icons
# Layouts: master -> tab group (monocle) -> scrolling -> floating
-# Get current layout
-LAYOUT=$(hyprctl getoption general:layout -j | jq -r '.str')
-
-# Check if workspace has allfloat enabled
-ALLFLOAT=$(hyprctl activeworkspace -j | jq -r '.hasfullscreenwindow')
+# Check if hyprctl is reachable
+if ! hyprctl version >/dev/null 2>&1; then
+ echo '{"text": "<span size='"'"'large'"'"'>󰕰</span>", "tooltip": "Hyprland not connected"}'
+ exit 0
+fi
-# Check if active window is floating
-FLOATING=$(hyprctl activewindow -j 2>/dev/null | jq -r '.floating // false')
+# Get current layout (redirect stderr to suppress connection errors)
+LAYOUT=$(hyprctl getoption general:layout -j 2>/dev/null | jq -r '.str // "unknown"')
# Check workspace rules for allfloat
-WSRULES=$(hyprctl activeworkspace -j | jq -r '.rules // []')
+WSRULES=$(hyprctl activeworkspace -j 2>/dev/null | jq -r '.rules // []')
# Determine icon and tooltip
if [ "$LAYOUT" = "master" ] && echo "$WSRULES" | grep -q "allfloat"; then
diff --git a/dotfiles/hyprland/.local/bin/waybar-netspeed b/dotfiles/hyprland/.local/bin/waybar-netspeed
index 97e8e5e..a6296b0 100755
--- a/dotfiles/hyprland/.local/bin/waybar-netspeed
+++ b/dotfiles/hyprland/.local/bin/waybar-netspeed
@@ -6,7 +6,7 @@
INTERFACE=$(ip route | awk '/default/ {print $5; exit}')
if [ -z "$INTERFACE" ]; then
- echo '{"text": "󰤭 Disconnected", "tooltip": "No network connection", "class": "disconnected"}'
+ echo '{"text": "󰤭 Offline", "tooltip": "No network connection", "class": "disconnected"}'
exit 0
fi
diff --git a/dotfiles/hyprland/.local/share/applications/android-file-transfer.desktop b/dotfiles/hyprland/.local/share/applications/android-file-transfer.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/android-file-transfer.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/arandr.desktop b/dotfiles/hyprland/.local/share/applications/arandr.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/arandr.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/avahi-discover.desktop b/dotfiles/hyprland/.local/share/applications/avahi-discover.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/avahi-discover.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/blueman-adapters.desktop b/dotfiles/hyprland/.local/share/applications/blueman-adapters.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/blueman-adapters.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/blueman-manager.desktop b/dotfiles/hyprland/.local/share/applications/blueman-manager.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/blueman-manager.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/bssh.desktop b/dotfiles/hyprland/.local/share/applications/bssh.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/bssh.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/bvnc.desktop b/dotfiles/hyprland/.local/share/applications/bvnc.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/bvnc.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/caffeine.desktop b/dotfiles/hyprland/.local/share/applications/caffeine.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/caffeine.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/calibre-ebook-edit.desktop b/dotfiles/hyprland/.local/share/applications/calibre-ebook-edit.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/calibre-ebook-edit.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/calibre-ebook-viewer.desktop b/dotfiles/hyprland/.local/share/applications/calibre-ebook-viewer.desktop
new file mode 100644
index 0000000..0dbe42d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/calibre-ebook-viewer.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=Calibre E-book Viewer
+GenericName=Viewer for E-books
+Comment=Viewer for E-books in all the major formats
+TryExec=ebook-viewer
+Exec=ebook-viewer --detach %f
+Icon=calibre-viewer
+Categories=Office;Viewer;
+Keywords=epub;ebook;viewer;
+MimeType=application/epub+zip;application/ereader;application/oebps-package+xml;application/vnd.ctc-posml;application/vnd.ms-word.document.macroenabled.12;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/x-cb7;application/x-cbc;application/x-cbr;application/x-cbz;application/x-mobi8-ebook;application/x-mobipocket-ebook;application/x-mobipocket-subscription;application/x-sony-bbeb;image/vnd.djvu;
diff --git a/dotfiles/hyprland/.local/share/applications/calibre-lrfviewer.desktop b/dotfiles/hyprland/.local/share/applications/calibre-lrfviewer.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/calibre-lrfviewer.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/cmake-gui.desktop b/dotfiles/hyprland/.local/share/applications/cmake-gui.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/cmake-gui.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/compton.desktop b/dotfiles/hyprland/.local/share/applications/compton.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/compton.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/conky.desktop b/dotfiles/hyprland/.local/share/applications/conky.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/conky.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/cups.desktop b/dotfiles/hyprland/.local/share/applications/cups.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/cups.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/dwm.desktop b/dotfiles/hyprland/.local/share/applications/dwm.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/dwm.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/emacs-mail.desktop b/dotfiles/hyprland/.local/share/applications/emacs-mail.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/emacs-mail.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/emacsclient-mail.desktop b/dotfiles/hyprland/.local/share/applications/emacsclient-mail.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/emacsclient-mail.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/file.desktop b/dotfiles/hyprland/.local/share/applications/file.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/file.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/foot-server.desktop b/dotfiles/hyprland/.local/share/applications/foot-server.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/foot-server.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/footclient.desktop b/dotfiles/hyprland/.local/share/applications/footclient.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/footclient.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/gammastep-indicator.desktop b/dotfiles/hyprland/.local/share/applications/gammastep-indicator.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/gammastep-indicator.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/gammastep.desktop b/dotfiles/hyprland/.local/share/applications/gammastep.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/gammastep.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/gcr-prompter.desktop b/dotfiles/hyprland/.local/share/applications/gcr-prompter.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/gcr-prompter.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/gcr-viewer.desktop b/dotfiles/hyprland/.local/share/applications/gcr-viewer.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/gcr-viewer.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/geoclue-demo-agent.desktop b/dotfiles/hyprland/.local/share/applications/geoclue-demo-agent.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/geoclue-demo-agent.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/geoclue-where-am-i.desktop b/dotfiles/hyprland/.local/share/applications/geoclue-where-am-i.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/geoclue-where-am-i.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/gkbd-keyboard-display.desktop b/dotfiles/hyprland/.local/share/applications/gkbd-keyboard-display.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/gkbd-keyboard-display.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/google-chrome.desktop b/dotfiles/hyprland/.local/share/applications/google-chrome.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/google-chrome.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/google-maps-geo-handler.desktop b/dotfiles/hyprland/.local/share/applications/google-maps-geo-handler.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/google-maps-geo-handler.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/gtk-lshw.desktop b/dotfiles/hyprland/.local/share/applications/gtk-lshw.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/gtk-lshw.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/htop.desktop b/dotfiles/hyprland/.local/share/applications/htop.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/htop.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/hy3-util.desktop b/dotfiles/hyprland/.local/share/applications/hy3-util.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/hy3-util.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/hyprland.desktop b/dotfiles/hyprland/.local/share/applications/hyprland.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/hyprland.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/img.desktop b/dotfiles/hyprland/.local/share/applications/img.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/img.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/insync-helper.desktop b/dotfiles/hyprland/.local/share/applications/insync-helper.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/insync-helper.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/ipython.desktop b/dotfiles/hyprland/.local/share/applications/ipython.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/ipython.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/jconsole.desktop b/dotfiles/hyprland/.local/share/applications/jconsole.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/jconsole.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/jshell.desktop b/dotfiles/hyprland/.local/share/applications/jshell.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/jshell.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/jvisualvm.desktop b/dotfiles/hyprland/.local/share/applications/jvisualvm.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/jvisualvm.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/libreoffice-base.desktop b/dotfiles/hyprland/.local/share/applications/libreoffice-base.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/libreoffice-base.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/lock-screen.desktop b/dotfiles/hyprland/.local/share/applications/lock-screen.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/lock-screen.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/logout.desktop b/dotfiles/hyprland/.local/share/applications/logout.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/logout.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/lstopo.desktop b/dotfiles/hyprland/.local/share/applications/lstopo.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/lstopo.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/lxappearance.desktop b/dotfiles/hyprland/.local/share/applications/lxappearance.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/lxappearance.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/mail.desktop b/dotfiles/hyprland/.local/share/applications/mail.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/mail.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/nautilus-autorun-software.desktop b/dotfiles/hyprland/.local/share/applications/nautilus-autorun-software.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/nautilus-autorun-software.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/nm-applet.desktop b/dotfiles/hyprland/.local/share/applications/nm-applet.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/nm-applet.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/nm-connection-editor.desktop b/dotfiles/hyprland/.local/share/applications/nm-connection-editor.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/nm-connection-editor.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/nsxiv.desktop b/dotfiles/hyprland/.local/share/applications/nsxiv.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/nsxiv.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/openstreetmap-geo-handler.desktop b/dotfiles/hyprland/.local/share/applications/openstreetmap-geo-handler.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/openstreetmap-geo-handler.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.flameshot.Flameshot.desktop b/dotfiles/hyprland/.local/share/applications/org.flameshot.Flameshot.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.flameshot.Flameshot.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.freedesktop.Xwayland.desktop b/dotfiles/hyprland/.local/share/applications/org.freedesktop.Xwayland.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.freedesktop.Xwayland.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.gnome.Zenity.desktop b/dotfiles/hyprland/.local/share/applications/org.gnome.Zenity.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.gnome.Zenity.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt.desktop b/dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt5.desktop b/dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt5.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.gnupg.pinentry-qt5.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.kde.polkit-kde-authentication-agent-1.desktop b/dotfiles/hyprland/.local/share/applications/org.kde.polkit-kde-authentication-agent-1.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.kde.polkit-kde-authentication-agent-1.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-cb.desktop b/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-cb.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-cb.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-djvu.desktop b/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-djvu.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-djvu.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-pdf-mupdf.desktop b/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-pdf-mupdf.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/org.pwmt.zathura-pdf-mupdf.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/pdf.desktop b/dotfiles/hyprland/.local/share/applications/pdf.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/pdf.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/picom.desktop b/dotfiles/hyprland/.local/share/applications/picom.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/picom.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/proton-bridge.desktop b/dotfiles/hyprland/.local/share/applications/proton-bridge.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/proton-bridge.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/qt5ct.desktop b/dotfiles/hyprland/.local/share/applications/qt5ct.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/qt5ct.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/qt6ct.desktop b/dotfiles/hyprland/.local/share/applications/qt6ct.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/qt6ct.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/qv4l2.desktop b/dotfiles/hyprland/.local/share/applications/qv4l2.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/qv4l2.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/qvidcap.desktop b/dotfiles/hyprland/.local/share/applications/qvidcap.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/qvidcap.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/ranger.desktop b/dotfiles/hyprland/.local/share/applications/ranger.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/ranger.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/reboot.desktop b/dotfiles/hyprland/.local/share/applications/reboot.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/reboot.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/redshift-gtk.desktop b/dotfiles/hyprland/.local/share/applications/redshift-gtk.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/redshift-gtk.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/redshift.desktop b/dotfiles/hyprland/.local/share/applications/redshift.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/redshift.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/rofi-theme-selector.desktop b/dotfiles/hyprland/.local/share/applications/rofi-theme-selector.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/rofi-theme-selector.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/rofi.desktop b/dotfiles/hyprland/.local/share/applications/rofi.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/rofi.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/shutdown.desktop b/dotfiles/hyprland/.local/share/applications/shutdown.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/shutdown.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/suspend.desktop b/dotfiles/hyprland/.local/share/applications/suspend.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/suspend.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/text.desktop b/dotfiles/hyprland/.local/share/applications/text.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/text.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/thunar-bulk-rename.desktop b/dotfiles/hyprland/.local/share/applications/thunar-bulk-rename.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/thunar-bulk-rename.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/thunar-settings.desktop b/dotfiles/hyprland/.local/share/applications/thunar-settings.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/thunar-settings.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/thunar.desktop b/dotfiles/hyprland/.local/share/applications/thunar.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/thunar.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/torbrowser-settings.desktop b/dotfiles/hyprland/.local/share/applications/torbrowser-settings.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/torbrowser-settings.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/user-dirs-update-gtk.desktop b/dotfiles/hyprland/.local/share/applications/user-dirs-update-gtk.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/user-dirs-update-gtk.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/vim.desktop b/dotfiles/hyprland/.local/share/applications/vim.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/vim.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/wheelmap-geo-handler.desktop b/dotfiles/hyprland/.local/share/applications/wheelmap-geo-handler.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/wheelmap-geo-handler.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/xcolor.desktop b/dotfiles/hyprland/.local/share/applications/xcolor.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/xcolor.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/xdg-desktop-portal-gtk.desktop b/dotfiles/hyprland/.local/share/applications/xdg-desktop-portal-gtk.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/xdg-desktop-portal-gtk.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/xdvi.desktop b/dotfiles/hyprland/.local/share/applications/xdvi.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/xdvi.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/xfce4-about.desktop b/dotfiles/hyprland/.local/share/applications/xfce4-about.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/xfce4-about.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/xgps.desktop b/dotfiles/hyprland/.local/share/applications/xgps.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/xgps.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/applications/xgpsspeed.desktop b/dotfiles/hyprland/.local/share/applications/xgpsspeed.desktop
new file mode 100644
index 0000000..5829b2d
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/applications/xgpsspeed.desktop
@@ -0,0 +1,2 @@
+[Desktop Entry]
+NoDisplay=true
diff --git a/dotfiles/hyprland/.local/share/easyeffects/output/dt770-pro-250-harman-eq.json b/dotfiles/hyprland/.local/share/easyeffects/output/dt770-pro-250-harman-eq.json
new file mode 100644
index 0000000..8774a0f
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/easyeffects/output/dt770-pro-250-harman-eq.json
@@ -0,0 +1,199 @@
+{
+ "output": {
+ "blocklist": [],
+ "equalizer": {
+ "input-gain": -4.7,
+ "output-gain": 0.0,
+ "mode": "IIR",
+ "num-bands": 9,
+ "split-channels": false,
+ "left": {
+ "band0": {
+ "frequency": 45.0,
+ "gain": -4.7,
+ "q": 0.4,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band1": {
+ "frequency": 102.0,
+ "gain": 7.0,
+ "q": 5.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band2": {
+ "frequency": 134.0,
+ "gain": -3.8,
+ "q": 3.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band3": {
+ "frequency": 217.0,
+ "gain": 5.5,
+ "q": 2.3,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band4": {
+ "frequency": 2400.0,
+ "gain": -1.4,
+ "q": 4.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band5": {
+ "frequency": 3350.0,
+ "gain": 5.0,
+ "q": 3.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band6": {
+ "frequency": 5200.0,
+ "gain": 0.7,
+ "q": 3.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band7": {
+ "frequency": 6200.0,
+ "gain": -5.6,
+ "q": 4.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band8": {
+ "frequency": 10000.0,
+ "gain": -6.0,
+ "q": 0.7,
+ "type": "Hi-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ }
+ },
+ "right": {
+ "band0": {
+ "frequency": 45.0,
+ "gain": -4.7,
+ "q": 0.4,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band1": {
+ "frequency": 102.0,
+ "gain": 7.0,
+ "q": 5.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band2": {
+ "frequency": 134.0,
+ "gain": -3.8,
+ "q": 3.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band3": {
+ "frequency": 217.0,
+ "gain": 5.5,
+ "q": 2.3,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band4": {
+ "frequency": 2400.0,
+ "gain": -1.4,
+ "q": 4.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band5": {
+ "frequency": 3350.0,
+ "gain": 5.0,
+ "q": 3.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band6": {
+ "frequency": 5200.0,
+ "gain": 0.7,
+ "q": 3.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band7": {
+ "frequency": 6200.0,
+ "gain": -5.6,
+ "q": 4.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band8": {
+ "frequency": 10000.0,
+ "gain": -6.0,
+ "q": 0.7,
+ "type": "Hi-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ }
+ }
+ },
+ "plugins_order": [
+ "equalizer"
+ ]
+ }
+}
diff --git a/dotfiles/hyprland/.local/share/easyeffects/output/pixel-buds-pro-2-harman-eq.json b/dotfiles/hyprland/.local/share/easyeffects/output/pixel-buds-pro-2-harman-eq.json
new file mode 100644
index 0000000..056e216
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/easyeffects/output/pixel-buds-pro-2-harman-eq.json
@@ -0,0 +1,219 @@
+{
+ "output": {
+ "blocklist": [],
+ "equalizer": {
+ "input-gain": -2.8,
+ "output-gain": 0.0,
+ "mode": "IIR",
+ "num-bands": 10,
+ "split-channels": false,
+ "left": {
+ "band0": {
+ "frequency": 105.0,
+ "gain": 2.1,
+ "q": 0.7,
+ "type": "Lo-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band1": {
+ "frequency": 1384.0,
+ "gain": -4.3,
+ "q": 2.82,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band2": {
+ "frequency": 670.0,
+ "gain": 1.5,
+ "q": 1.78,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band3": {
+ "frequency": 41.0,
+ "gain": 0.8,
+ "q": 1.26,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band4": {
+ "frequency": 4720.0,
+ "gain": -3.1,
+ "q": 6.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band5": {
+ "frequency": 10000.0,
+ "gain": -0.6,
+ "q": 0.7,
+ "type": "Hi-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band6": {
+ "frequency": 3725.0,
+ "gain": 2.9,
+ "q": 6.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band7": {
+ "frequency": 2565.0,
+ "gain": 1.7,
+ "q": 4.21,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band8": {
+ "frequency": 153.0,
+ "gain": 0.7,
+ "q": 2.47,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band9": {
+ "frequency": 6024.0,
+ "gain": 0.7,
+ "q": 4.95,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ }
+ },
+ "right": {
+ "band0": {
+ "frequency": 105.0,
+ "gain": 2.1,
+ "q": 0.7,
+ "type": "Lo-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band1": {
+ "frequency": 1384.0,
+ "gain": -4.3,
+ "q": 2.82,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band2": {
+ "frequency": 670.0,
+ "gain": 1.5,
+ "q": 1.78,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band3": {
+ "frequency": 41.0,
+ "gain": 0.8,
+ "q": 1.26,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band4": {
+ "frequency": 4720.0,
+ "gain": -3.1,
+ "q": 6.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band5": {
+ "frequency": 10000.0,
+ "gain": -0.6,
+ "q": 0.7,
+ "type": "Hi-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band6": {
+ "frequency": 3725.0,
+ "gain": 2.9,
+ "q": 6.0,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band7": {
+ "frequency": 2565.0,
+ "gain": 1.7,
+ "q": 4.21,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band8": {
+ "frequency": 153.0,
+ "gain": 0.7,
+ "q": 2.47,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band9": {
+ "frequency": 6024.0,
+ "gain": 0.7,
+ "q": 4.95,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ }
+ }
+ },
+ "plugins_order": [
+ "equalizer"
+ ]
+ }
+}
diff --git a/dotfiles/hyprland/.local/share/easyeffects/output/pxc-550-ii-harman-eq.json b/dotfiles/hyprland/.local/share/easyeffects/output/pxc-550-ii-harman-eq.json
new file mode 100644
index 0000000..c400419
--- /dev/null
+++ b/dotfiles/hyprland/.local/share/easyeffects/output/pxc-550-ii-harman-eq.json
@@ -0,0 +1,219 @@
+{
+ "output": {
+ "blocklist": [],
+ "equalizer": {
+ "input-gain": -3.0,
+ "output-gain": 0.0,
+ "mode": "IIR",
+ "num-bands": 10,
+ "split-channels": false,
+ "left": {
+ "band0": {
+ "frequency": 105.0,
+ "gain": 2.5,
+ "q": 0.7,
+ "type": "Lo-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band1": {
+ "frequency": 185.0,
+ "gain": -3.5,
+ "q": 1.35,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band2": {
+ "frequency": 2997.0,
+ "gain": 3.1,
+ "q": 1.24,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band3": {
+ "frequency": 4429.0,
+ "gain": 3.2,
+ "q": 5.98,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band4": {
+ "frequency": 5270.0,
+ "gain": -5.7,
+ "q": 4.03,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band5": {
+ "frequency": 10000.0,
+ "gain": -2.6,
+ "q": 0.7,
+ "type": "Hi-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band6": {
+ "frequency": 49.0,
+ "gain": -0.8,
+ "q": 1.84,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band7": {
+ "frequency": 359.0,
+ "gain": 0.8,
+ "q": 2.24,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band8": {
+ "frequency": 248.0,
+ "gain": -0.9,
+ "q": 4.62,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band9": {
+ "frequency": 735.0,
+ "gain": 0.4,
+ "q": 2.9,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ }
+ },
+ "right": {
+ "band0": {
+ "frequency": 105.0,
+ "gain": 2.5,
+ "q": 0.7,
+ "type": "Lo-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band1": {
+ "frequency": 185.0,
+ "gain": -3.5,
+ "q": 1.35,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band2": {
+ "frequency": 2997.0,
+ "gain": 3.1,
+ "q": 1.24,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band3": {
+ "frequency": 4429.0,
+ "gain": 3.2,
+ "q": 5.98,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band4": {
+ "frequency": 5270.0,
+ "gain": -5.7,
+ "q": 4.03,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band5": {
+ "frequency": 10000.0,
+ "gain": -2.6,
+ "q": 0.7,
+ "type": "Hi-shelf",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band6": {
+ "frequency": 49.0,
+ "gain": -0.8,
+ "q": 1.84,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band7": {
+ "frequency": 359.0,
+ "gain": 0.8,
+ "q": 2.24,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band8": {
+ "frequency": 248.0,
+ "gain": -0.9,
+ "q": 4.62,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ },
+ "band9": {
+ "frequency": 735.0,
+ "gain": 0.4,
+ "q": 2.9,
+ "type": "Bell",
+ "mode": "RLC (BT)",
+ "slope": "x1",
+ "mute": false,
+ "solo": false
+ }
+ }
+ },
+ "plugins_order": [
+ "equalizer"
+ ]
+ }
+}
diff --git a/dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh b/dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh
new file mode 100644
index 0000000..9d80353
--- /dev/null
+++ b/dotfiles/hyprland/.profile.d/99-hyprland-autostart.sh
@@ -0,0 +1,26 @@
+# 99-hyprland-autostart.sh
+# Auto-start Hyprland on TTY1 console login
+
+# Guard: only on TTY1, not SSH, no existing display
+[ "$XDG_VTNR" = "1" ] || return 0
+[ -z "$SSH_TTY" ] || return 0
+[ -z "$WAYLAND_DISPLAY" ] || return 0
+[ -z "$DISPLAY" ] || return 0
+command -v Hyprland >/dev/null 2>&1 || return 0
+
+# Skip if flag file exists (touch ~/.skip-hyprland to disable)
+[ -f "$HOME/.skip-hyprland" ] && return 0
+
+# Setup logging (same pattern as start-hyprland wrapper)
+_hypr_log_dir="$HOME/.local/var/log"
+mkdir -p "$_hypr_log_dir"
+_hypr_log="$_hypr_log_dir/hyprland-$(date +%Y-%m-%d-%H%M%S).log"
+
+# Clear screen and start Hyprland (no exec = return to shell on exit)
+clear
+Hyprland >"$_hypr_log" 2>&1
+
+# Hyprland exited - inform user
+echo "Hyprland session ended. Type 'start-hyprland' to restart."
+
+unset _hypr_log_dir _hypr_log
diff --git a/dotfiles/hyprland/.profile.d/hyprland.sh b/dotfiles/hyprland/.profile.d/hyprland.sh
new file mode 100644
index 0000000..be15b02
--- /dev/null
+++ b/dotfiles/hyprland/.profile.d/hyprland.sh
@@ -0,0 +1,14 @@
+# Hyprland profile settings
+# These override X11 settings from .profile when running Wayland
+
+# Terminal (foot instead of st)
+export TERM="xterm-256color"
+export TERMINAL="foot"
+
+# XDG overrides for Wayland
+export XDG_CURRENT_DESKTOP=Hyprland
+export XDG_SESSION_TYPE=wayland
+export XDG_SESSION_DESKTOP=Hyprland
+
+# alias startx to start Hyprland (muscle memory from X11)
+alias startx="start-hyprland"