#!/bin/sh
# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file will be executed when user logins into VT2 or ssh.
is_freon() {
  # Currently 'frecon' is only available on boards with Freon enabled.
  if [ -x "/sbin/frecon" ]; then
    return 0
  else
    return 1
  fi
}

is_highres() {
  local modes_file="/sys/class/graphics/fb0/modes"
  [ -s "${modes_file}" ] || return 2

  # Sample output: U:1366x768p-0
  local mode_line="$(head -n 1 "${modes_file}")"
  local dots="$(echo "${mode_line}" | sed 's/^U://; s/p-.*$//')"
  local dots_x="${dots%x*}"
  local dots_y="${dots#*x}"

  # Try to get physical size by xrandr (via EDID).
  local display="$(XAUTHORITY=/home/chronos/.Xauthority \
                   xrandr -d :0 2>/dev/null |
                   grep " connected " | head -n 1)"
  # Sample output: eDP connected 2560x1700+0+0 (normal left inverted right x
  # axis y axis) 272mm x 181mm
  local points="$(echo "${display}" | sed 's/.*connected //; s/+.*$//')"
  local lengths="$(echo "${display}" |
                   sed 's/.* \([0-9]*\)mm x \([0-9]*\)mm/\1 \2/')"
  # DPI is calculated by dots / length. However, the data (points) from xrandr
  # may be altered by Chrome, so we have to use points only if dots (from fb0)
  # are not available.
  [ -n "${dots_x}" ] || dots_x="${points%x*}"
  [ -n "${dots_y}" ] || dots_y="${points#*x}"
  local length_x="${lengths% *}"
  local length_y="${lengths#* }"

  if [ -n "${length_x}" -a -n "${length_y}" ]; then
    # 1 mm = 1/25.4 inch.
    local dpi_x=$((dots_x * 254 / (length_x * 10) ))
    local dpi_y=$((dots_y * 254 / (length_y * 10) ))

    # Assume 150dpi needs large fonts.
    [ "${dpi_x}" -ge 150 -a "${dpi_y}" -gt 150 ]
  else
    # No physical length information.
    # Assume 1600x1200 already needs large fonts.
    [ "${dots_x}" -ge 1600 -a "${dots_y}" -ge 1200 ]
  fi
}

set_vt_fonts() {
  if is_highres; then
    (cd /usr/local/share/consolefonts; setfont sun12x22)
  fi
}

main() {
  # Frecon by default has cursor and large font enabled.
  if ! is_freon; then
    # Factory with VT always needs cursor.
    setterm -cursor on

    # On high-DPI systems, we need large console fonts.
    set_vt_fonts || true
  fi

  # Put '/usr/local/factory/bin' at the head of PATH so that we can run factory
  # binaries easily.
  export PATH="/usr/local/factory/bin:${PATH}"
}

main "$@"
