replaced hyprland config with lua

This commit is contained in:
2026-08-23 11:32:54 -07:00
parent 4a659f016f
commit e4df7507ac
20 changed files with 897 additions and 350 deletions

94
hypr/scripts/monitor_setup2.sh Executable file
View File

@@ -0,0 +1,94 @@
#!/bin/bash
# ~/.config/hypr/scripts/monitor_setup.sh
notify-send -t 3000 "Monitor Setup" "Detecting display configuration..."
LAPTOP="eDP-1"
LID_STATE=$(grep -q "open" /proc/acpi/button/lid/LID/state && echo "open" || echo "closed")
MONITORS=$(hyprctl monitors -j)
if [[ $(echo "$MONITORS" | jq 'length') -eq 0 ]]; then
notify-send "Monitor Error" "No monitors detected."
exit 1
fi
EXTERNAL=$(echo "$MONITORS" | jq -r '.[] | select(.name != "'$LAPTOP'") | .name' | head -1)
get_capped_res() {
local monitor=$1
local modes=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$monitor\") | .availableModes[]?")
if [[ -z "$modes" ]]; then
echo "preferred"
return
fi
local max_pixels=0
local max_refresh=0
local best_mode="preferred"
while IFS= read -r mode; do
local width=$(echo "$mode" | awk -F'@' '{print $1}' | awk -F'x' '{print $1}')
local height=$(echo "$mode" | awk -F'@' '{print $1}' | awk -F'x' '{print $2}')
local refresh=$(echo "$mode" | awk -F'@' '{print $2}' | sed 's/Hz//')
if (( $(echo "$refresh > 120.1" | bc -l) )); then
continue
fi
local pixels=$((width * height))
if [[ $pixels -gt $max_pixels || ($pixels -eq $max_pixels && $(echo "$refresh > $max_refresh" | bc -l) -eq 1) ]]; then
max_pixels=$pixels
max_refresh=$refresh
best_mode="${width}x${height}@${refresh}"
fi
done <<< "$modes"
echo "$best_mode"
}
EXT_RES=$(get_capped_res "$EXTERNAL")
LAPTOP_RES=$(get_capped_res "$LAPTOP")
# Case 1: Laptop Only
if [ -z "$EXTERNAL" ]; then
notify-send -t 7000 "Monitor Setup" "Laptop Mode: $LAPTOP_RES"
hyprctl --batch \
"eval 'hl.monitor({ output = \"$LAPTOP\", mode = \"$LAPTOP_RES\", position = \"auto\", scale = 1 })' ; \
eval 'hl.dsp.workspace_move_to_monitor(1, \"$LAPTOP\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(2, \"$LAPTOP\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(3, \"$LAPTOP\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(4, \"$LAPTOP\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(5, \"$LAPTOP\")'"
exit 0
fi
# Case 2: External + Open Lid
if [ "$LID_STATE" = "open" ]; then
notify-send -t 7000 "Monitor Setup" "Dual Mode\nExternal: $EXT_RES"
hyprctl --batch \
"eval 'hl.monitor({ output = \"$LAPTOP\", mode = \"$LAPTOP_RES\", position = \"0x0\", scale = 1 })' ; \
eval 'hl.monitor({ output = \"$EXTERNAL\", mode = \"$EXT_RES\", position = \"auto\", scale = 1 })' ; \
eval 'hl.dsp.workspace_move_to_monitor(1, \"$EXTERNAL\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(2, \"$EXTERNAL\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(3, \"$LAPTOP\")'"
# Case 3: External Only (Clamshell)
else
notify-send -t 3000 "Monitor Setup" "Clamshell Mode\nExternal: $EXT_RES"
hyprctl --batch \
"eval 'hl.monitor({ output = \"$EXTERNAL\", mode = \"$EXT_RES\", position = \"0x0\", scale = 1 })' ; \
eval 'hl.dsp.dpms(\"off\", \"$LAPTOP\")' ;
eval 'hl.monitor({ output = \"$LAPTOP\", disabled = true })' ; \
eval 'hl.dsp.workspace_move_to_monitor(1, \"$EXTERNAL\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(2, \"$EXTERNAL\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(3, \"$EXTERNAL\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(4, \"$EXTERNAL\")' ; \
eval 'hl.dsp.workspace_move_to_monitor(5, \"$EXTERNAL\")'"
fi
hyprctl eval 'hl.dsp.focus({ workspace = "1" })'