Update toggle-displays
bb16bd26ceb3e9258940b8c8a34d2dafc5a875af
1 parent
e3474502
bin/toggle-displays
+34 -14
| 1 | - | #!/bin/sh |
|
| 1 | + | #!/usr/bin/env ruby |
|
| 2 | 2 | ||
| 3 | - | internal=eDP-1 |
|
| 4 | - | external1=DP-1 |
|
| 5 | - | external2=DP-2 |
|
| 6 | - | output="$(xrandr)" |
|
| 3 | + | internal = "eDP1" |
|
| 4 | + | external = "DP1" |
|
| 5 | + | output = `xrandr` |
|
| 7 | 6 | ||
| 8 | - | if echo "$output" | grep -P "\b$external1 connected\b"; then |
|
| 9 | - | xrandr --output "$internal" --off --output "$external1" --auto --primary |
|
| 10 | - | elif echo "$output" | grep -P "\b$external2 connected\b"; then |
|
| 11 | - | xrandr --output "$internal" --off --output "$external2" --auto --primary |
|
| 12 | - | else |
|
| 13 | - | xrandr --output "$external1" --off --output "$internal" --auto --primary |
|
| 14 | - | xrandr --size 1920x1080 |
|
| 15 | - | fi |
|
| 7 | + | internal_connected = /#{internal} connected\b/.match?(output) |
|
| 8 | + | external_connected = /#{external} connected\b/.match?(output) |
|
| 16 | 9 | ||
| 17 | - | feh --bg-fill ~/images/background |
|
| 10 | + | internal_active = /#{internal} connected .*?\d+x\d+\b/.match?(output) |
|
| 11 | + | external_active = /#{external} connected .*?\d+x\d+\b/.match?(output) |
|
| 12 | + | ||
| 13 | + | puts "#{internal} connected: #{internal_connected}" |
|
| 14 | + | puts "#{external} connected: #{external_connected}" |
|
| 15 | + | puts "#{internal} active: #{internal_active}" |
|
| 16 | + | puts "#{external} active: #{external_active}" |
|
| 17 | + | ||
| 18 | + | def xrandr(args) |
|
| 19 | + | system "xrandr #{args}" |
|
| 20 | + | end |
|
| 21 | + | ||
| 22 | + | if external_active && !internal_active && internal_connected then |
|
| 23 | + | # Switch External -> Internal |
|
| 24 | + | xrandr "--output #{internal} --auto --primary --output #{external} --off " |
|
| 25 | + | elsif internal_active && !external_active && external_connected then |
|
| 26 | + | # Switch Internal -> External |
|
| 27 | + | xrandr "--output #{external} --auto --primary --output #{internal} --off" |
|
| 28 | + | elsif !internal_active && !external_active && external_connected && internal_connected then |
|
| 29 | + | # Switch None -> All |
|
| 30 | + | xrandr "--output #{internal} --auto --output #{external} --auto --primary" |
|
| 31 | + | elsif internal_active && external_active then |
|
| 32 | + | # Switch All -> External |
|
| 33 | + | xrandr "--output #{internal} --off --output #{external} --auto --primary" |
|
| 34 | + | end |
|
| 35 | + | ||
| 36 | + | # Set background |
|
| 37 | + | system "set-background" |