CCCPaste

xrandr fzf script for Linux Displays

#!/bin/bash
###################################################################### 
#Copyright (C) 2021 Kris Occhipinti
#https://filmsbykris.com

#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.

#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with this program.  If not, see .
###################################################################### 

default_resolution="1920x1080"

function main(){
  display="$(get_display)"
  resolution="$(get_resolution)"
  position="$(get_position)"
  display2="$(get_display)"

  eval xrandr --output $display --mode $resolution $position $display2

}

function error(){
  echo $*
  exit 1
}

function get_position(){
  p="$(echo -e "--right-of\n--left-of\n--above\n--below\n--same-as"|fzf --prompt "Select a position: ")"
  [[ "$p" == "" ]] && error "No Position Selected."
  echo "$p"
}

function get_resolution(){
  r="$(xrandr |grep "^   "|awk '{print $1}'|sort -u;echo "$default_resolution")"
  r="$(echo -e "$r" |fzf --tac --prompt "Select a resolution: ")"
  [[ "$r" == "" ]] && error "No Resolution Selected."
  echo $r
}

function get_display(){
  d="$(xrandr |grep " connected "|awk '{print $1}'|fzf --prompt "Select a display: ")"
  [[ "$d" == "" ]] && error "No Display Selected."
  echo "$d"
}

main $*