You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

71 lines
2.2 KiB

#!/bin/bash
# Hyprland Monitor Management Script
# Disables eDP-1 when both DP-5 and DP-6 are connected
# Function to check if a monitor is connected
check_monitor_connected() {
local monitor_name="$1"
hyprctl monitors -j | jq -r ".[].name" | grep -q "^${monitor_name}$"
}
# Function to check if a monitor is disabled
check_monitor_disabled() {
local monitor_name="$1"
hyprctl monitors -j | jq -r ".[] | select(.name == \"${monitor_name}\") | .disabled" 2>/dev/null
}
# Function to disable a monitor
disable_monitor() {
local monitor_name="$1"
echo "Disabling monitor: $monitor_name"
hyprctl keyword monitor "$monitor_name,disable"
}
# Function to enable a monitor (you might want to customize the resolution/position)
enable_monitor() {
local monitor_name="$1"
echo "Enabling monitor: $monitor_name"
# Adjust the resolution and position as needed for your eDP-1
hyprctl keyword monitor "$monitor_name,preferred,auto,1"
}
# Main logic
main() {
# Check if both external monitors are connected
if check_monitor_connected "DP-5" && check_monitor_connected "DP-6"; then
echo "Both DP-5 and DP-6 are connected"
# Check if eDP-1 is currently enabled
if check_monitor_connected "eDP-1"; then
local edp_disabled=$(check_monitor_disabled "eDP-1")
if [[ "$edp_disabled" == "false" ]]; then
echo "eDP-1 is enabled, disabling it..."
disable_monitor "eDP-1"
else
echo "eDP-1 is already disabled"
fi
else
echo "eDP-1 is not detected"
fi
else
echo "Not both external monitors are connected"
# Check if eDP-1 exists and is disabled, then enable it
if check_monitor_connected "eDP-1"; then
local edp_disabled=$(check_monitor_disabled "eDP-1")
if [[ "$edp_disabled" == "true" ]]; then
echo "eDP-1 is disabled, enabling it..."
enable_monitor "eDP-1"
else
echo "eDP-1 is already enabled"
fi
else
echo "eDP-1 is not detected"
fi
fi
}
# Run the main function
main "$@"