aboutsummaryrefslogtreecommitdiff
path: root/i3/blocks/display
blob: 907190012411b76d92905a6cc4820df8c7f40780 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash

xrandrOut=$(xrandr)

hdmiName=$(echo "${xrandrOut}" | grep -i 'HDMI' | awk '{print $1}')
vgaName=$(echo "${xrandrOut}" | grep -i 'VGA' | awk '{print $1}')
edpName=$(echo "${xrandrOut}" | grep -i 'EDP' | awk '{print $1}')

activeDisplays=$(echo "${xrandrOut}" | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/" | tr -s '\n' ' ')
displayFile='/tmp/.displays'

if [[ -f "${displayFile}" ]]; then
    oldDisplays=$(cat "${displayFile}")
else
    oldDisplays=""
fi

if [[ "${oldDisplays}" != "${activeDisplays}" ]]; then
    change="yes"
else
    change="no"
fi

# External, HDMI + VGA
if [[ "$activeDisplays" =~ "${hdmiName}" && "$activeDisplays" =~ "${vgaName}" ]]; then
  if [[ "${change}" = "yes" ]]; then
    $(xrandr --output "${edpName}" --off)
    $(xrandr --output "${vgaName}" --auto)
    $(xrandr --output "${hdmiName}" --primary --auto)
  fi
  echo "VGA1 & HDMI"
  echo "VGA1 & HDMI"
  echo ""
# External, HDMI
elif [[ "$activeDisplays" =~ "${hdmiName}" ]]; then
  if [[ "${change}" = "yes" ]]; then
    $(xrandr --output "${edpName}" --off)
    $(xrandr --output "${vgaName}" --off)
    $(xrandr --output "${hdmiName}" --primary --auto)
  fi
  echo "HDMI"
  echo "HDMI"
  echo ""
# External, VGA
elif [[ "$activeDisplays" =~ "${vgaName}" ]]; then
  if [[ "${change}" = "yes" ]]; then
    $(xrandr --output "${edpName}" --off)
    $(xrandr --output "${vgaName}" --primary --auto)
    $(xrandr --output "${hdmiName}" --off)
  fi
  echo "VGA"
  echo "VGA"
  echo
# Only one internal
elif [[ "$activeDisplays" =~ "${edpName}" ]]; then
  if [[ "${change}" = "yes" ]]; then
    $(xrandr --output "${edpName}" --primary --auto)
    $(xrandr --output "${vgaName}" --off)
    $(xrandr --output "${hdmiName}" --off)
  fi
  echo "eDP"
  echo "eDP"
  echo ""
fi

if [[ "${change}" = "yes" ]]; then
  echo "${activeDisplays}" > "${displayFile}"
fi