Final commit before Phase II enhancements

This commit is contained in:
2026-07-21 23:25:07 -04:00
parent 19594ff8b3
commit 60fe219ff7
7 changed files with 60 additions and 39 deletions
+5
View File
@@ -0,0 +1,5 @@
return {
active_border = "rgba(b4d088ff)",
inactive_border = "rgba(45483daa)",
shadow = "rgba(12140ebf)",
}
+10 -10
View File
@@ -397,16 +397,16 @@ function M.setupMonitors()
-- Dynamically spawn waybar only for connected monitors, and use a robust kill sequence -- Dynamically spawn waybar only for connected monitors, and use a robust kill sequence
-- inside the background script to prevent race conditions during rapid hotplug events -- inside the background script to prevent race conditions during rapid hotplug events
local waybar_cmds = { -- local waybar_cmds = {
"killall -q waybar", -- "killall -q waybar",
"sleep 0.5", -- "sleep 0.5",
"killall -q waybar" -- "killall -q waybar"
} -- }
for logical, _ in pairs(logical_to_physical) do -- for logical, _ in pairs(logical_to_physical) do
table.insert(waybar_cmds, string.format("nohup waybar -c ~/.config/waybar/config-%s.jsonc -s ~/.config/waybar/style-%s.css >/dev/null 2>&1 &", logical, logical)) -- table.insert(waybar_cmds, string.format("nohup waybar -c ~/.config/waybar/config-%s.jsonc -s ~/.config/waybar/style-%s.css >/dev/null 2>&1 &", logical, logical))
end -- end
--
hl.dispatch(hl.dsp.exec_cmd("bash -c '" .. table.concat(waybar_cmds, "\n") .. "'")) -- hl.dispatch(hl.dsp.exec_cmd("bash -c '" .. table.concat(waybar_cmds, "\n") .. "'"))
end end
return M return M
+27 -13
View File
@@ -5,7 +5,7 @@
----------------------------------------------------- -----------------------------------------------------
local copy = "wl-copy --trim-newline" local copy = "wl-copy --trim-newline"
local paste = "wl-paste" local paste = "wl-paste"
local launcher = "rofi -show run -p 'launch'" local launcher = "ags request \"launcher:app\""
-- local clear = "cliphist list | head -n1 | cliphist delete" -- local clear = "cliphist list | head -n1 | cliphist delete"
@@ -37,14 +37,16 @@ hl.env("XDG_SESSION_DESKTOP", "Hyprland")
----------------------------------------------------- -----------------------------------------------------
-- Appearance & Input (from appearance.conf & input.conf) -- Appearance & Input (from appearance.conf & input.conf)
----------------------------------------------------- -----------------------------------------------------
local colors = require("colors")
hl.config({ hl.config({
general = { general = {
gaps_in = 1, gaps_in = 1,
gaps_out = 2, gaps_out = 2,
border_size = 2, border_size = 2,
col = { col = {
active_border = "rgba(fabd2f99)", active_border = colors.active_border,
inactive_border = "rgba(595959aa)", inactive_border = colors.inactive_border,
}, },
resize_on_border = false, resize_on_border = false,
allow_tearing = false, allow_tearing = false,
@@ -58,9 +60,10 @@ hl.config({
inactive_opacity = 1.0, inactive_opacity = 1.0,
shadow = { shadow = {
enabled = true, enabled = true,
range = 4, range = 25,
render_power = 3, render_power = 3,
color = "rgba(1a1a1aee)" color = colors.shadow,
color_inactive = colors.shadow
}, },
blur = { blur = {
enabled = true, enabled = true,
@@ -165,6 +168,14 @@ hl.window_rule({ workspace = "name:browser silent", match = { class = browsers }
hl.window_rule({ workspace = "name:jobs silent", match = { class = ".*[Vv]ivaldi-stable.*" } }) hl.window_rule({ workspace = "name:jobs silent", match = { class = ".*[Vv]ivaldi-stable.*" } })
hl.window_rule({ workspace = "name:meeting silent", match = { class = meeting } }) hl.window_rule({ workspace = "name:meeting silent", match = { class = meeting } })
-----------------------------------------------------
-- Layer Rules
-----------------------------------------------------
hl.layer_rule({ blur = true, ignore_alpha = 0.1, match = { namespace = "^bar.*" } })
hl.layer_rule({ blur = true, ignore_alpha = 0.1, match = { namespace = "^dashboard" } })
hl.layer_rule({ blur = true, ignore_alpha = 0.1, match = { namespace = "^dimmer.*" } })
----------------------------------------------------- -----------------------------------------------------
-- Workspaces (from workspaces.conf) -- Workspaces (from workspaces.conf)
@@ -179,7 +190,7 @@ local bind = hl.bind
local dsp = hl.dsp local dsp = hl.dsp
local fn = require("functions") local fn = require("functions")
bind("SUPER + Q", dsp.exec_cmd("hyprctl reload && hyprctl eval 'require(\"functions\").setupMonitors()' && notify-send 'Hyprland' 'Config Reloaded' -u low -t 2000")) bind("SUPER + Q", dsp.exec_cmd("hyprctl reload && hyprctl eval 'require(\"functions\").setupMonitors()' && notify-send 'Hyprland' 'Config Reloaded' -u low -t 2000; ags quit; ags run &"))
-- BUG FIX: SUPER + SHIFT + Q was bound to both tmux kill and uwsm stop. -- BUG FIX: SUPER + SHIFT + Q was bound to both tmux kill and uwsm stop.
-- bind("SUPER + SHIFT + Q", dsp.exec_cmd("tmux kill-server")) -- bind("SUPER + SHIFT + Q", dsp.exec_cmd("tmux kill-server"))
bind("SUPER + SHIFT + Q", dsp.exec_cmd("killall -q signal-desktop; uwsm stop")) bind("SUPER + SHIFT + Q", dsp.exec_cmd("killall -q signal-desktop; uwsm stop"))
@@ -209,7 +220,9 @@ bind("SUPER + ALT + H", function() fn.focusOrLaunch("qutebrowser", "org.qutebrow
bind("SUPER + S", dsp.exec_cmd(launcher)) -- Win+S for Search/Launcher bind("SUPER + S", dsp.exec_cmd(launcher)) -- Win+S for Search/Launcher
bind("SUPER + R", dsp.exec_cmd(launcher)) -- Win+R for Run bind("SUPER + R", dsp.exec_cmd(launcher)) -- Win+R for Run
bind("SUPER + E", dsp.exec_cmd("nautilus")) -- Win+E for Explorer bind("SUPER + E", dsp.exec_cmd("nautilus")) -- Win+E for Explorer
bind("SUPER + V", dsp.exec_cmd("cliphist list | rofi -dmenu -p 'paste' | cliphist decode | " .. copy .. " && " .. paste)) -- Win+V for Clipboard bind("SUPER + O", dsp.exec_cmd("ags request \"launcher:open\"")) -- Win+O for Open File
bind("SUPER + SHIFT + O", dsp.exec_cmd("ags request \"launcher:openwith\"")) -- Win+Shift+O for Open With
bind("SUPER + V", dsp.exec_cmd("ags request \"launcher:cliphist\"")) -- Win+V for Clipboard
bind("SUPER + SHIFT + S", function() fn.focusOrLaunch("pavucontrol", "org.pulseaudio.pavucontrol", "org.pulseaudio.pavucontrol") end) bind("SUPER + SHIFT + S", function() fn.focusOrLaunch("pavucontrol", "org.pulseaudio.pavucontrol", "org.pulseaudio.pavucontrol") end)
-- Window control -- Window control
@@ -230,7 +243,7 @@ local function cycle_layout()
hl.config({ general = { layout = new_layout } }) hl.config({ general = { layout = new_layout } })
os.execute("echo '" .. layout_icons[new_layout] .. "' > /tmp/hypr_layout.txt") os.execute("echo '" .. layout_icons[new_layout] .. "' > /tmp/hypr_layout.txt")
os.execute("pkill -RTMIN+8 waybar") -- os.execute("pkill -RTMIN+8 waybar")
end end
bind("SUPER + right", function() cycle_layout() end) bind("SUPER + right", function() cycle_layout() end)
@@ -244,16 +257,16 @@ bind("SUPER + K", hl.dsp.window.cycle_next({ prev = true }))
bind("ALT + Tab", hl.dsp.window.cycle_next()) bind("ALT + Tab", hl.dsp.window.cycle_next())
bind("ALT + SHIFT + Tab", hl.dsp.window.cycle_next({ prev = true })) bind("ALT + SHIFT + Tab", hl.dsp.window.cycle_next({ prev = true }))
bind("SUPER + X", dsp.exec_cmd("dunstctl close")) bind("SUPER + X", dsp.exec_cmd("ags request close-notification"))
bind("SUPER + Y", dsp.exec_cmd("dunstctl close-all")) bind("SUPER + Y", dsp.exec_cmd("ags request close-all-notifications"))
-- Workspace control -- Workspace control
bind("SUPER + CTRL + right", function() hl.dispatch(hl.dsp.focus({ workspace = "m+1" })) end) bind("SUPER + CTRL + right", function() hl.dispatch(hl.dsp.focus({ workspace = "m+1" })) end)
bind("SUPER + CTRL + left", function() hl.dispatch(hl.dsp.focus({ workspace = "m-1" })) end) bind("SUPER + CTRL + left", function() hl.dispatch(hl.dsp.focus({ workspace = "m-1" })) end)
bind("SUPER + SHIFT + H", function() hl.dispatch(hl.dsp.focus({ workspace = "m-1" })) end) bind("SUPER + SHIFT + H", function() hl.dispatch(hl.dsp.focus({ workspace = "m-1" })) end)
bind("SUPER + SHIFT + L", function() hl.dispatch(hl.dsp.focus({ workspace = "m+1" })) end) bind("SUPER + SHIFT + L", function() hl.dispatch(hl.dsp.focus({ workspace = "m+1" })) end)
bind("SUPER + SHIFT + M", function() fn.mv2workspace() end) bind("SUPER + SHIFT + M", dsp.exec_cmd("ags request \"launcher:movetoworkspace\""))
bind("SUPER + SHIFT + N", function() fn.createWorkspace() end) bind("SUPER + SHIFT + N", dsp.exec_cmd("ags request \"launcher:workspace\""))
bind("SUPER + SHIFT + X", function() fn.deleteWorkspace() end) bind("SUPER + SHIFT + X", function() fn.deleteWorkspace() end)
bind("SUPER + SHIFT + Z", function() fn.createWorkspace(fn.getActiveWorkspaceName()) end) bind("SUPER + SHIFT + Z", function() fn.createWorkspace(fn.getActiveWorkspaceName()) end)
bind("SUPER + SHIFT + left", function() fn.moveWorkspace(-1) end) bind("SUPER + SHIFT + left", function() fn.moveWorkspace(-1) end)
@@ -286,8 +299,9 @@ hl.on("hyprland.start", function()
hl.exec_cmd("uwsm app -- hypridle") hl.exec_cmd("uwsm app -- hypridle")
hl.exec_cmd("hyprpaper &") hl.exec_cmd("hyprpaper &")
-- Waybar is now managed entirely by functions.setupMonitors() -- Waybar is now managed entirely by functions.setupMonitors()
hl.exec_cmd("uwsm app -- ags run")
hl.exec_cmd("uwsm app -- espanso start") hl.exec_cmd("uwsm app -- espanso start")
hl.exec_cmd("uwsm app -- dunst") -- hl.exec_cmd("uwsm app -- dunst") -- Replaced with AGS Notifd
hl.exec_cmd("nm-applet") hl.exec_cmd("nm-applet")
hl.exec_cmd("signal-desktop") hl.exec_cmd("signal-desktop")
hl.exec_cmd("hp-systray") hl.exec_cmd("hp-systray")
+5 -5
View File
@@ -3,18 +3,18 @@ splash = false
wallpaper { wallpaper {
monitor = eDP-1 monitor = eDP-1
path = /home/trey/images/Seven Beats Music/2025-02-24.jpg path = /home/trey/images/Seven Beats Music/2024-07-15.jpg
fit_mode = cover fit_mode = cover
} }
wallpaper { wallpaper {
monitor = DP-9 monitor = DP-7
path = /home/trey/images/Seven Beats Music/2024-09-09.jpg path = /home/trey/images/Seven Beats Music/2024-12-09.jpg
fit_mode = cover fit_mode = cover
} }
wallpaper { wallpaper {
monitor = DP-10 monitor = DP-8
path = /home/trey/images/Seven Beats Music/2026-01-26.jpg path = /home/trey/images/Seven Beats Music/2024-10-14.jpg
fit_mode = cover fit_mode = cover
} }
+1 -1
View File
@@ -4,7 +4,7 @@
# application related scripts and commands # application related scripts and commands
$app = ~/.config/hypr/scripts/focusOrLaunch $app = ~/.config/hypr/scripts/focusOrLaunch
$launcher = rofi -show run -p "launch" $launcher = ags request "launcher:app"
$timetracker_prompt = ~/.config/hypr/scripts/timetracker-log-prompt $timetracker_prompt = ~/.config/hypr/scripts/timetracker-log-prompt
$timetracker_print = ~/.config/hypr/scripts/timetracker-log-print $timetracker_print = ~/.config/hypr/scripts/timetracker-log-print
$selection = rofi -dmenu -theme-str 'inputbar {enabled: false;}' -i -matching prefix -auto-select -l 2 $selection = rofi -dmenu -theme-str 'inputbar {enabled: false;}' -i -matching prefix -auto-select -l 2
+11 -8
View File
@@ -20,23 +20,26 @@ while true; do
if [ "$STATUS" == "Discharging" ] && [ "$CAPACITY" -le 5 ]; then if [ "$STATUS" == "Discharging" ] && [ "$CAPACITY" -le 5 ]; then
if [ ! -f "/run/user/${UID}/battery_low" ]; then if [ ! -f "/run/user/${UID}/battery_low" ]; then
logger "Low power! Triggering notification...." logger "Low power! Triggering notification...."
dunstify --urgency=critical \ # -p returns the ID so we can close it later
NOTIF_ID=$(dunstify --urgency=critical \
-p \
--icon=/usr/share/icons/breeze-dark/emblems/16/emblem-warning.svg \ --icon=/usr/share/icons/breeze-dark/emblems/16/emblem-warning.svg \
"LOW BATTERY!" \ "LOW BATTERY!" \
"Battery level is at ${CAPACITY}%, plug power quick!" "Battery level is at ${CAPACITY}%, plug power quick!")
touch "/run/user/${UID}/battery_low" echo "$NOTIF_ID" > "/run/user/${UID}/battery_low"
fi fi
# Clear the notification if we plug back in and rise above 5% # Clear the notification if we plug back in and rise above 5%
elif [ "$STATUS" == "Charging" ] && [ "$CAPACITY" -gt 5 ]; then elif [ "$STATUS" == "Charging" ] && [ "$CAPACITY" -gt 5 ]; then
if [ -f "/run/user/${UID}/battery_low" ]; then if [ -f "/run/user/${UID}/battery_low" ]; then
logger "Power reconnected and above 5 percent, clearing notification state." logger "Power reconnected and above 5 percent, clearing notification state."
rm -f "/run/user/${UID}/battery_low"
# Find and close the specific dunst notification by ID NOTIF_ID=$(cat "/run/user/${UID}/battery_low")
for id in $(dunstctl history | jq '.data[0][] | select(.summary.data == "LOW BATTERY!") | .id.data'); do if [ -n "$NOTIF_ID" ]; then
dunstify --close=${id} dunstify --close=$NOTIF_ID
done fi
rm -f "/run/user/${UID}/battery_low"
fi fi
fi fi
-1
View File
@@ -5,5 +5,4 @@ return {
{ name = "work", monitor = "desc:Ancor Communications Inc ASUS VS228 E3LMTF071438" }, { name = "work", monitor = "desc:Ancor Communications Inc ASUS VS228 E3LMTF071438" },
{ name = "meeting", monitor = "eDP-1" }, { name = "meeting", monitor = "eDP-1" },
{ name = "monitoring", monitor = "eDP-1" }, { name = "monitoring", monitor = "eDP-1" },
{ name = "blah", monitor = "DP-8" },
} }