Added and tested script to prepare henrovnix_ok for publishing
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# hyprscrolling-per-monitor.sh
|
||||
# Usage:
|
||||
# ./hyprscrolling-per-monitor.sh <MONITOR_NAME>
|
||||
#
|
||||
# Example:
|
||||
# ./hyprscrolling-per-monitor.sh DP-1
|
||||
#
|
||||
# This script reads the current resolution for the given monitor via hyprctl
|
||||
# and sets hyprscrolling column width accordingly.
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
echo "Usage: $0 <MONITOR_NAME>"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
MONITOR="$1"
|
||||
|
||||
# Map a resolution (WIDTHxHEIGHT) to a column width value for hyprscrolling.
|
||||
# Tune these values to taste.
|
||||
columnwidth_for_resolution() {
|
||||
local res="$1"
|
||||
case "$res" in
|
||||
# --- Ultra-wide / super-wide ---
|
||||
5120x1440) echo "0.22" ;; # 49" 32:9
|
||||
3840x1080) echo "0.25" ;; # 49" 32:9 (your ultrawide)
|
||||
3440x1440) echo "0.33" ;; # 34" 21:9
|
||||
2560x1080) echo "0.40" ;; # 21:9 budget ultrawide
|
||||
|
||||
# --- QHD / high DPI ---
|
||||
3840x2160) echo "0.40" ;; # 4K
|
||||
3200x1800) echo "0.50" ;;
|
||||
2880x1800) echo "0.50" ;;
|
||||
2560x1600) echo "0.55" ;; # 16:10
|
||||
2560x1440) echo "0.55" ;; # QHD
|
||||
|
||||
# --- FHD / laptop-ish ---
|
||||
1920x1200) echo "0.55" ;; # 16:10
|
||||
1920x1080) echo "0.50" ;; # FHD (your laptop request)
|
||||
|
||||
# --- HD / smaller ---
|
||||
1680x1050) echo "0.65" ;;
|
||||
1600x900) echo "0.70" ;;
|
||||
1366x768) echo "0.80" ;;
|
||||
1280x720) echo "0.85" ;;
|
||||
|
||||
# Unknown / fallback
|
||||
*) echo "" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get resolution for a named monitor from hyprctl.
|
||||
# Output format should be WIDTHxHEIGHT (e.g. 3840x1080).
|
||||
get_monitor_resolution() {
|
||||
local mon="$1"
|
||||
|
||||
# hyprctl monitors prints lines like:
|
||||
# Monitor DP-1 (ID 0): 3840x1080@119.88 at 0x0 ...
|
||||
# We'll extract the first WIDTHxHEIGHT after the colon.
|
||||
local line
|
||||
if ! line="$(hyprctl monitors 2>/dev/null | grep -F "Monitor ${mon} " -m1 || true)"; then
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Extract token like 3840x1080@... then strip @...
|
||||
local token
|
||||
token="$(awk -F': ' '{print $2}' <<<"$line" | awk '{print $1}' | cut -d'@' -f1 || true)"
|
||||
echo "$token"
|
||||
}
|
||||
|
||||
resolution="$(get_monitor_resolution "$MONITOR")"
|
||||
if [[ -z "$resolution" ]]; then
|
||||
echo "Could not determine resolution for monitor '$MONITOR'."
|
||||
echo "Tip: check available names with: hyprctl monitors"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
colw="$(columnwidth_for_resolution "$resolution")"
|
||||
if [[ -z "$colw" ]]; then
|
||||
echo "No mapping for resolution '$resolution' on monitor '$MONITOR'."
|
||||
echo "Add it to columnwidth_for_resolution() in this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Apply to hyprscrolling.
|
||||
# Using layoutmsg colresize (as in your snippet).
|
||||
hyprctl dispatch layoutmsg colresize all "$colw"
|
||||
|
||||
echo "hyprscrolling: set column width to $colw for monitor '$MONITOR' ($resolution)"
|
||||
Reference in New Issue
Block a user