Added ags to hyprland
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to get the current resolution
|
||||
get_current_resolution() {
|
||||
local output
|
||||
output=$(hyprctl monitors -j)
|
||||
local width height refreshRate
|
||||
width=$(echo "$output" | jq -r '.[0].width')
|
||||
height=$(echo "$output" | jq -r '.[0].height')
|
||||
refreshRate=$(echo "$output" | jq -r '.[0].refreshRate')
|
||||
echo "$width $height $refreshRate"
|
||||
}
|
||||
|
||||
# Function to update the Hyprland configuration with the new resolution
|
||||
update_resolution_config() {
|
||||
local newWidth="$1"
|
||||
local newHeight="$2"
|
||||
local newRefreshRate="$3"
|
||||
local currentRes
|
||||
currentRes=$(get_current_resolution)
|
||||
local width height refreshRate
|
||||
width=${newWidth:-$(echo "$currentRes" | awk '{print $1}')}
|
||||
height=${newHeight:-$(echo "$currentRes" | awk '{print $2}')}
|
||||
refreshRate=${newRefreshRate:-$(echo "$currentRes" | awk '{print $3}')}
|
||||
|
||||
local modelineOutput
|
||||
modelineOutput=$(gtf "$width" "$height" "$refreshRate")
|
||||
local modeline
|
||||
modeline=$(echo "$modelineOutput" | grep -oP 'Modeline "\K[^"]+')
|
||||
|
||||
if [ -z "$modeline" ]; then
|
||||
echo "Failed to generate modeline"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract the resolution and refresh rate from the modeline
|
||||
local resolution
|
||||
resolution=$(echo "$modeline" | grep -oP '^[0-9]+x[0-9]+')
|
||||
local rate
|
||||
rate=$(echo "$modeline" | grep -oP '[0-9]+.[0-9]+$')
|
||||
|
||||
if [ -z "$resolution" ] || [ -z "$rate" ]; then
|
||||
echo "Failed to extract resolution or refresh rate from modeline"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local configPath="${HOME}/.config/hypr/hyprland/general.conf"
|
||||
local newConfigContent
|
||||
newConfigContent=$(sed "s/^monitor=.*$/monitor=eDP-1, $resolution@$rate, auto, 1/" "$configPath")
|
||||
|
||||
echo "$newConfigContent" > "$configPath"
|
||||
}
|
||||
|
||||
# Main script
|
||||
echo "Welcome to the Resolution Configurator"
|
||||
echo ""
|
||||
echo " +---------------------------+"
|
||||
echo " | _____ |"
|
||||
echo " | | | |"
|
||||
echo " | | | |"
|
||||
echo " | |_____| |"
|
||||
echo " | |"
|
||||
echo " +---------------------------+"
|
||||
echo ""
|
||||
echo "Current resolution and refresh rate:"
|
||||
currentRes=$(get_current_resolution)
|
||||
width=$(echo "$currentRes" | awk '{print $1}')
|
||||
height=$(echo "$currentRes" | awk '{print $2}')
|
||||
refreshRate=$(echo "$currentRes" | awk '{print $3}')
|
||||
|
||||
echo "Width: $width px"
|
||||
echo "Height: $height px"
|
||||
echo "Refresh Rate: $refreshRate Hz"
|
||||
|
||||
echo ""
|
||||
|
||||
read -p "Enter new width (or press Enter to keep current width): " newWidth
|
||||
read -p "Enter new height (or press Enter to keep current height): " newHeight
|
||||
read -p "Enter new refresh rate (or press Enter to keep current refresh rate): " newRefreshRate
|
||||
|
||||
# Validate inputs (if provided)
|
||||
if [[ ! "$newWidth" =~ ^[0-9]+$ && -n "$newWidth" ]]; then
|
||||
echo "Invalid width value."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "$newHeight" =~ ^[0-9]+$ && -n "$newHeight" ]]; then
|
||||
echo "Invalid height value."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "$newRefreshRate" =~ ^[0-9]+$ && -n "$newRefreshRate" ]]; then
|
||||
echo "Invalid refresh rate value."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
update_resolution_config "$newWidth" "$newHeight" "$newRefreshRate"
|
||||
|
||||
echo "Resolution updated successfully."
|
||||
Reference in New Issue
Block a user