dotfiles

Alpine Linux dotfiles

git clone git://git.lin.moe/dotfiles.git

 1#!/bin/bash
 2
 3XRANDR=$(which xrandr)
 4
 5MONITORS=( $( ${XRANDR} | awk '( $2 == "connected" ){ print $1 }' ) )
 6
 7
 8NUM_MONITORS=${#MONITORS[@]}
 9
10TITLES=()
11COMMANDS=()
12
13
14function gen_xrandr_only()
15{
16    selected=$1
17
18    cmd="xrandr --output ${MONITORS[$selected]} --auto "
19
20    for entry in $(seq 0 $((${NUM_MONITORS}-1)))
21    do
22        if [ $selected != $entry ]
23        then
24            cmd="$cmd --output ${MONITORS[$entry]} --off"
25        fi
26    done
27
28    echo $cmd
29}
30
31
32
33declare -i index=0
34TILES[$index]="Cancel"
35COMMANDS[$index]="true"
36index+=1
37
38
39for entry in $(seq 0 $((${NUM_MONITORS}-1)))
40do
41    TILES[$index]="Only ${MONITORS[$entry]}"
42    COMMANDS[$index]=$(gen_xrandr_only $entry)
43    index+=1
44done
45
46##
47# Dual screen options
48##
49for entry_a in $(seq 0 $((${NUM_MONITORS}-1)))
50do
51    for entry_b in $(seq 0 $((${NUM_MONITORS}-1)))
52    do
53        if [ $entry_a != $entry_b ]
54        then
55            TILES[$index]="Dual Screen ${MONITORS[$entry_a]} -> ${MONITORS[$entry_b]}"
56            COMMANDS[$index]="xrandr --output ${MONITORS[$entry_a]} --auto \
57                              --output ${MONITORS[$entry_b]} --auto --left-of ${MONITORS[$entry_a]}"
58
59            index+=1
60        fi
61    done
62done
63
64
65##
66# Clone monitors
67##
68for entry_a in $(seq 0 $((${NUM_MONITORS}-1)))
69do
70    for entry_b in $(seq 0 $((${NUM_MONITORS}-1)))
71    do
72        if [ $entry_a != $entry_b ]
73        then
74            TILES[$index]="Clone Screen ${MONITORS[$entry_a]} -> ${MONITORS[$entry_b]}"
75            COMMANDS[$index]="xrandr --output ${MONITORS[$entry_a]} --auto \
76                              --output ${MONITORS[$entry_b]} --auto --same-as ${MONITORS[$entry_a]}"
77
78            index+=1
79        fi
80    done
81done
82
83
84##
85#  Generate entries, where first is key.
86##
87function gen_entries()
88{
89    for a in $(seq 0 $(( ${#TILES[@]} -1 )))
90    do
91        echo $a ${TILES[a]}
92    done
93}
94
95# Call menu
96SEL=$( gen_entries | rofi -dmenu -p "Monitor Setup:" -a 0 -no-custom  | awk '{print $1}' )
97
98# Call xrandr
99$( ${COMMANDS[$SEL]} )