Created
October 14, 2017 09:28
-
-
Save jens-ox/bc2d4f76406c291b826d2ff012124760 to your computer and use it in GitHub Desktop.
Switch layout through rofi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
XRANDR=$(which xrandr) | |
MONITORS=( $( ${XRANDR} | awk '( $2 == "connected" ){ print $1 }' ) ) | |
NUM_MONITORS=${#MONITORS[@]} | |
TITLES=() | |
COMMANDS=() | |
function gen_xrandr_only() | |
{ | |
selected=$1 | |
cmd="xrandr --output ${MONITORS[$selected]} --auto " | |
for entry in $(seq 0 $((${NUM_MONITORS}-1))) | |
do | |
if [ $selected != $entry ] | |
then | |
cmd="$cmd --output ${MONITORS[$entry]} --off" | |
fi | |
done | |
echo $cmd | |
} | |
declare -i index=0 | |
TILES[$index]="Cancel" | |
COMMANDS[$index]="true" | |
index+=1 | |
for entry in $(seq 0 $((${NUM_MONITORS}-1))) | |
do | |
TILES[$index]="Only ${MONITORS[$entry]}" | |
COMMANDS[$index]=$(gen_xrandr_only $entry) | |
index+=1 | |
done | |
## | |
# Dual screen options | |
## | |
for entry_a in $(seq 0 $((${NUM_MONITORS}-1))) | |
do | |
for entry_b in $(seq 0 $((${NUM_MONITORS}-1))) | |
do | |
if [ $entry_a != $entry_b ] | |
then | |
TILES[$index]="Dual Screen ${MONITORS[$entry_a]} -> ${MONITORS[$entry_b]}" | |
COMMANDS[$index]="xrandr --output ${MONITORS[$entry_a]} --auto \ | |
--output ${MONITORS[$entry_b]} --auto --left-of ${MONITORS[$entry_a]}" | |
index+=1 | |
fi | |
done | |
done | |
## | |
# Clone monitors | |
## | |
for entry_a in $(seq 0 $((${NUM_MONITORS}-1))) | |
do | |
for entry_b in $(seq 0 $((${NUM_MONITORS}-1))) | |
do | |
if [ $entry_a != $entry_b ] | |
then | |
TILES[$index]="Clone Screen ${MONITORS[$entry_a]} -> ${MONITORS[$entry_b]}" | |
COMMANDS[$index]="xrandr --output ${MONITORS[$entry_a]} --auto \ | |
--output ${MONITORS[$entry_b]} --auto --same-as ${MONITORS[$entry_a]}" | |
index+=1 | |
fi | |
done | |
done | |
## | |
# Generate entries, where first is key. | |
## | |
function gen_entries() | |
{ | |
for a in $(seq 0 $(( ${#TILES[@]} -1 ))) | |
do | |
echo $a ${TILES[a]} | |
done | |
} | |
# Call menu | |
SEL=$( gen_entries | rofi -dmenu -p "Monitor Setup:" | awk '{print $1}' ) | |
# Call xrandr | |
$( ${COMMANDS[$SEL]} ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment