diff --git a/shell/display-resolution.sh b/shell/display-resolution.sh new file mode 100644 index 0000000..52bd949 --- /dev/null +++ b/shell/display-resolution.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# https://gist.github.com/anthonyaxenov/c16e1181d4b8a8644c57ec8a1f6cf21c +######################################################################### +# # +# Set display resolution # +# # +# Author: Anthony Axenov (Антон Аксенов) # +# Version: 1.0 # +# License: WTFPL # +# # +######################################################################### +# # +# Using this script you can change your display resolution # +# to any one you need. Just adjust some vars below and run script # +# (chmod +x needed). # +# # +######################################################################### + +# Set display name to work with. You can get it via 'xrandr --listactivemonitors' +display="HDMI-2" +# Set width of this display in px +width=1600 +# Set height of this display in px +height=900 + +# Sometimes cvt and gtf generates different modelines. +# You can play around and look which of them gives best result: +modeline=$(cvt ${width} ${height} | grep "Modeline") +# modeline=$(gtf ${width} ${height} 60 | grep "Modeline") + +# Some important data needed to xrandr: +modename="${width}x${height}_my" +params=$(echo "$modeline" | sed "s|^\s*Modeline\s*\"[0-9x_.]*\"\s*||") + +echo "Set resolution ${width}x${height} on display $display:" +echo "$modename $params" + +# Simple logic: +# 1. Switch display to safe mode which always exists (I believe) to avoid errors +xrandr --output $display --mode 640x480 +# 2. If display aready have our mode -- we must delete it to avoid errors +if $(xrandr | grep -q "$modename"); then + # 2.1. Detach mode from display + xrandr --delmode $display $modename + # 2.2. Remove mode itself + xrandr --rmmode $modename +fi +# 3. Create new mode with freshly generated parameters +xrandr --newmode $modename $params +# 4. Attach mode to our display +xrandr --addmode $display $modename +# 5. Switch display to this mode immidiately +xrandr --output $display --mode $modename