summaryrefslogtreecommitdiffstats
path: root/connect-screen
blob: 4f4403e9f24525797a9233b3ed8b56becfa01129 (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
69
70
71
72
73
74
75
76
77
78
79
#!/bin/bash

xrandr --output VIRTUAL1 --off
xrandr --output HDMI2 --off
xrandr --output DP1 --off
xrandr --output DP2 --off
xrandr --output DP1-1 --off
xrandr --output DP1-2 --off
xrandr --output DP2-1 --off
xrandr --output DP2-2 --off
xset r rate 250 50

has_hdmi2=$(xrandr | grep '^HDMI2 connected')
has_dp1=$(xrandr | grep '^DP1 connected')
has_dp1_1=$(xrandr | grep '^DP1-1 connected')
has_dp1_2=$(xrandr | grep '^DP1-2 connected')
has_dp2=$(xrandr | grep '^DP2 connected')
has_dp2_2=$(xrandr | grep '^DP2-2 connected')

output_left=""
output_right=""

if [[ $has_dp1_1 && $has_dp1_2 ]]; then
	xrandr --output DP1-2 --right-of eDP1 --mode 640x480 -r 60
	xrandr --output DP1-1 --right-of DP1-2 --mode 2560x1440 -r 60
	xrandr --output DP1-1 --primary
	output_left=DP1-2
	output_right=DP1-1
elif [[ $has_hdmi2 && $has_dp1_2 ]]; then
	xrandr --output DP1-2 --right-of eDP1 --auto
	xrandr --output HDMI2 --right-of DP1-2 --auto
	xrandr --output DP1-2 --primary
	output_left=DP1-2
	output_right=HDMI2
elif [[ $has_hdmi2 && $has_dp1 ]]; then
	xrandr --output DP1-1 --right-of eDP1 --auto
	xrandr --output HDMI2 --right-of DP1 --auto
	xrandr --output DP1 --primary
	output_left=DP1-1
	output_right=HDMI2
elif [[ $has_dp1 && $has_dp2_2 ]]; then
	xrandr --output DP2-2 --right-of eDP1 --auto
	xrandr --output DP1 --right-of DP2-2 --auto
	xrandr --output DP2-2 --primary
	output_left=DP2-2
	output_right=DP1
else
	if [[ $has_hdmi2 ]]; then
		xrandr --output HDMI2 --right-of eDP1 --auto
	fi

	if [[ $has_dp1 ]]; then
		xrandr --output DP1 --right-of eDP1 --auto
	fi

	if [[ $has_dp2 ]]; then
		xrandr --output DP2 --right-of eDP1 --auto
	fi

	xrandr --output eDP1 --primary
fi

xkbcomp .xkbmap "$DISPLAY"

# Reorganize workspaces across displays
if [[ $output_left != "" ]] && [[ $output_right != "" ]]; then
	workspaces_left=(3 4)
	workspaces_right=(1 2 5 6 7 8 9 10 11 12 13 14 15)
	for workspace in "${workspaces_left[@]}"; do
		i3-msg "[workspace=\"$workspace\"]" move workspace to output $output_left
	done

	for workspace in "${workspaces_right[@]}"; do
		i3-msg "[workspace=\"$workspace\"]" move workspace to output $output_right
	done

	i3-msg "workspace 3"
	i3-msg "workspace 1"
fi