#!/bin/bash # Filename: grml-resolution # Purpose: change X resolution via a simple menu frontend # Authors: Florian Keller , (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. ################################################################################ PN="$(basename "$0")" RESOLUTION=$(mktemp) ERROR=$(mktemp) bailout(){ rm -f "$RESOLUTION" "$ERROR" exit "$1" } trap bailout 1 2 3 15 main(){ # menu COUNTER=0 STRING="" # current mode CURRENT_RESOLUTION=$(xrandr | awk '/\*/ {print $1"_"$2}') # menu for i in $(xrandr | awk '{print $1"_"$2}' | grep "^[0-9]") ; do STRING="$STRING $COUNTER $i" ((COUNTER++)) done # Menu Tool # shellcheck disable=SC2086 dialog --title "$PN" --menu "Change X resolution via xrandr (current resolution: $CURRENT_RESOLUTION):" 0 0 0 $STRING 2>"$RESOLUTION" retval=$? case $retval in (1) echo "Cancel pressed." ; exit 1 ;; (255) echo "ESC pressed." ; exit 1 ;; esac CHOSE=$(cat "$RESOLUTION") if [ -n "$CHOSE" ] ; then # shellcheck disable=SC2015 xrandr -s "$CHOSE" 2>"$ERROR" && \ dialog --title "$PN" --msgbox "Running xrandr with resolution was succesful." 0 0 || \ dialog --title "$PN" --msgbox "Error when running xrandr with resolution $CHOSE: $(cat "$ERROR")" 0 0 fi } while true ; do main done bailout 0 # EOF #