My Context
Monitor: 32 inches display LG FHD Monitor
OS: Ubuntu 20.04
Problem Statement
Even though the display resolution of my external monitor supports 1920x1080, it is not shown. I want to see this resolution as default when my Ubuntu OS is loaded and I login in.
Solution Recipe
Note: We will use xrandr for this, which is a CLI to RandR (Resize and Rotate) X Window System extension.
xrandr --listactivemonitors
The output will have one of VGA-1 or DP-1 or HDMI-1. In my case it is DP-1. Depending on the value you get in your terminal, you may have to change the below script accordingly.
Type cvt 1920 1080 (to get the --newmode args for the next step).
Type sudo xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync , where 1920x1080 is the resolution and 60.00 is the screen refresh rate.
Type sudo xrandr --addmode DP-1 "1920x1080_60.00" .
Now close the terminal and go to Settings > Display settings and change it to 1920x1080. Enjoy your FHD until you reboot.
To persist these display resolutions, create a script called external_monitor_resolution.sh in the directory /etc/profile.d/. using sudo vim /etc/profile.d/external_monitor_resol.sh. and let the contents of the file have the above commands like below without sudo:
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode DP-1 "1920x1080_60.00"
Bonus
To temporarily try to see if your desired settings fit your purpose you can test it out temporarily like below:
xrandr -q to know your current display resolution
xrandr -s 1920x1080 to set change resolution temporarily until reboot
xrandr -r 60 to set refrest-rate temporarily until reboot
xrandr -s 1920x1080 -r 60 to set both screen resolution and refresh rate temporarily until reboot
sudo lshw -c video to check for the currently used graphic driver. Alternatively, you may also install mesa-utils and run glxinfo -B.