2024-08-05 20:24:05 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Function to execute xrandr commands and handle errors
|
|
|
|
execute_command() {
|
|
|
|
local command="$1"
|
|
|
|
echo "Executing: $command"
|
|
|
|
eval "$command" 2>&1 | tee /tmp/xrandr.log | tail -n 20
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo "An error occurred while executing the command. Check /tmp/xrandr.log for details."
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# Function to detect connected monitors
|
|
|
|
detect_connected_monitors() {
|
|
|
|
xrandr_output=$(xrandr)
|
|
|
|
echo "$xrandr_output" | grep " connected" | awk '{print $1}'
|
|
|
|
}
|
|
|
|
|
|
|
|
# Function to get resolutions for a monitor
|
|
|
|
get_unique_resolutions() {
|
|
|
|
local monitor="$1"
|
|
|
|
xrandr_output=$(xrandr)
|
2024-08-29 22:27:36 +01:00
|
|
|
# Get available resolutions from xrandr
|
|
|
|
available_resolutions=$(echo "$xrandr_output" | grep -A 10 "$monitor connected" | grep -oP '\d+x\d+' | sort -u)
|
|
|
|
|
|
|
|
# Define standard resolutions
|
|
|
|
standard_resolutions="1920x1080 1280x720 1600x900 2560x1440 3840x2160"
|
|
|
|
|
|
|
|
# Filter standard resolutions to include only those available for the monitor
|
|
|
|
filtered_standard_resolutions=$(echo "$standard_resolutions" | tr ' ' '\n' | grep -xF -f <(echo "$available_resolutions"))
|
|
|
|
|
|
|
|
# Get remaining available resolutions (excluding standard ones)
|
|
|
|
remaining_resolutions=$(comm -23 <(echo "$available_resolutions" | sort) <(echo "$filtered_standard_resolutions" | sort))
|
|
|
|
|
|
|
|
# Combine filtered standard resolutions and remaining resolutions, and limit to 10 results
|
|
|
|
echo -e "$filtered_standard_resolutions\n$remaining_resolutions" | head -n 10
|
2024-08-05 20:24:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# Function to prompt for confirmation
|
|
|
|
confirm_action() {
|
|
|
|
local action="$1"
|
|
|
|
echo "$action"
|
|
|
|
read -p "Are you sure? (y/n): " confirm
|
|
|
|
if [[ "$confirm" =~ ^[Yy]$ ]]; then
|
|
|
|
return 0
|
|
|
|
else
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
}
|