#!/bin/bash
#
# Helper functions to get info about the server machine (where the X11 server is running, main display)

## Return the name of the primary physical display
server_get_display() {
  xrandr | grep primary | awk '{print $1}'
}

# Calculate server's screen dpi (XORG with xdpyinfo reports wrong dpi, since it always defaults to 96 dpi)
server_get_dpi() {
  # Calculate diagonal
  diagonal() {
    printf '%.0f' $(bc <<< "scale=2; sqrt($1^2+$2^2)")
  }

  ## Find display resolution
  local h_res=$(xrandr | grep primary | awk '{ split($4, tokens, "+"); print tokens[1] }')
  local h_width=$(echo $h_res | cut -d'x' -f 1)
  local h_height=$(echo $h_res | cut -d'x' -f 2)
  local h_diag=$(diagonal $h_width $h_height)

  local h_psize=$(xrandr | grep eDP | awk '{print $(NF-2), $(NF)}' | sed "s/mm//g")
  local h_pwidth=$(echo "$h_psize" | cut -d' ' -f1)
  local h_pheight=$(echo "$h_psize" | cut -d' ' -f2)
  local h_pdiag=$(bc <<< "scale=0; $(diagonal $h_pwidth $h_pheight)/25.4")
  local h_dpi=$(bc <<< "scale=2; $h_diag/$h_pdiag" | xargs printf '%.0f')
  
  unset -f diagonal
  echo $h_dpi
} 

# Return the server ip
server_get_ip() {
  ip route | grep src | sed 's/^.*src \([^ ]*\).*$/\1/'
}
