Finally add all dotfiles correctly
This commit is contained in:
118
hypr/scripts/monitor_setup.sh.dual-not_working
Executable file
118
hypr/scripts/monitor_setup.sh.dual-not_working
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env bash
|
||||
# Robust Monitor Setup with Workspace Assignments
|
||||
|
||||
notify-send "Monitor Setup" "Starting configuration..."
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Phase 1: Reset State
|
||||
# -------------------------------------------------------------------
|
||||
#hyprctl keyword monitor "" # Clear all monitor rules
|
||||
#hyprctl keyword workspace "" # Clear workspace assignments
|
||||
#sleep 1
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Phase 2: Hardware Detection
|
||||
# -------------------------------------------------------------------
|
||||
MONITORS=$(hyprctl monitors -j all)
|
||||
LAPTOP="eDP-1"
|
||||
LID_STATE=$(cat /proc/acpi/button/lid/LID0/state | awk '{print $2}')
|
||||
EXTERNAL_MONITORS=($(echo "$MONITORS" | jq -r '.[] | select(.name != "eDP-1") | .name'))
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Phase 3: Configuration
|
||||
# -------------------------------------------------------------------
|
||||
|
||||
# Case 1: No externals - Laptop only
|
||||
if [ ${#EXTERNAL_MONITORS[@]} -eq 0 ]; then
|
||||
notify-send "Monitor Setup" "Laptop-only mode"
|
||||
hyprctl keyword monitor "$LAPTOP,1920x1200@60,0x0,1.5"
|
||||
sleep 1
|
||||
|
||||
# Assign all workspaces to laptop
|
||||
for ws in {1..10}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$LAPTOP"
|
||||
done
|
||||
|
||||
# Case 2: Any external monitors
|
||||
else
|
||||
# Try to identify known monitors by serial
|
||||
ULTRAWIDE=$(echo "$MONITORS" | jq -r '.[] | select(.serial == "303NTLE84432") | .name')
|
||||
STANDARD=$(echo "$MONITORS" | jq -r '.[] | select(.serial == "H4LN801666") | .name')
|
||||
|
||||
# Dual monitor setup (known monitors)
|
||||
if [ -n "$ULTRAWIDE" ] && [ -n "$STANDARD" ]; then
|
||||
notify-send "Monitor Setup" "Dual monitor mode (Ultrawide + Standard)"
|
||||
|
||||
# Configure monitors
|
||||
hyprctl keyword monitor "$ULTRAWIDE,5120x1440@120,0x1440,1"
|
||||
sleep 1
|
||||
hyprctl keyword monitor "$STANDARD,3440x1440@60,840x0,1"
|
||||
sleep 1
|
||||
hyprctl dispatch dpms off "$LAPTOP"
|
||||
|
||||
# Workspace assignments:
|
||||
# 1-4 on Ultrawide, 5-10 on Standard
|
||||
for ws in {1..4}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$ULTRAWIDE"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $ULTRAWIDE"
|
||||
done
|
||||
for ws in {5..9}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$STANDARD"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $STANDARD"
|
||||
done
|
||||
|
||||
hyprctl keyword "workspace 10, monitor:$LAPTOP"
|
||||
hyprctl dispatch moveworkspacetomonitor "10 $LAPTOP"
|
||||
|
||||
# Single external (any monitor)
|
||||
else
|
||||
EXT_MON=${EXTERNAL_MONITORS[0]}
|
||||
notify-send "Monitor Setup" "Single external: $EXT_MON"
|
||||
|
||||
# Get max resolution
|
||||
MAX_RES=$(echo "$MONITORS" | jq -r ".[] | select(.name == \"$EXT_MON\") | .availableModes[0] | \"\(.width)x\(.height)@\(.refreshRate)\"")
|
||||
|
||||
# Check lid state
|
||||
if [ "$LID_STATE" == "closed" ]; then
|
||||
# Lid closed - only external monitor
|
||||
notify-send "Monitor Setup" "Lid closed - using external only"
|
||||
hyprctl dispatch dpms off "$LAPTOP"
|
||||
hyprctl keyword monitor "$EXT_MON,$MAX_RES,0x0,1"
|
||||
sleep 1
|
||||
|
||||
hyprctl keyword "workspace 10, monitor:$LAPTOP"
|
||||
hyprctl dispatch moveworkspacetomonitor "10 $LAPTOP"
|
||||
|
||||
# Assign all workspaces to external
|
||||
for ws in {1..9}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$EXT_MON"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $EXT_MON"
|
||||
done
|
||||
|
||||
else
|
||||
# Lid open - both monitors
|
||||
notify-send "Monitor Setup" "Lid open - using laptop + external"
|
||||
hyprctl keyword monitor "$LAPTOP,1920x1200@60,0x0,1.5"
|
||||
sleep 1
|
||||
hyprctl keyword monitor "$EXT_MON,$MAX_RES,1920x0,1"
|
||||
sleep 1
|
||||
|
||||
# Workspace assignments:
|
||||
# 1-4 on laptop, 5-10 on external
|
||||
for ws in {1..4}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$LAPTOP"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $LAPTOP"
|
||||
done
|
||||
for ws in {5..10}; do
|
||||
hyprctl keyword "workspace $ws, monitor:$EXT_MON"
|
||||
hyprctl dispatch moveworkspacetomonitor "$ws $EXT_MON"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# Finalization
|
||||
# -------------------------------------------------------------------
|
||||
sleep 1
|
||||
notify-send "Monitor Setup Complete" "Active configuration:\n$(hyprctl monitors)"
|
||||
Reference in New Issue
Block a user