28 lines
1.3 KiB
Scala
Executable File
28 lines
1.3 KiB
Scala
Executable File
import scala.sys.process._
|
|
|
|
val eDP1 = List("--output", "eDP1", "--primary", "--auto", "--pos", "0x0", "--rotate", "normal")
|
|
|
|
val interfaceMapOn = Map[String, Seq[String]](
|
|
"DP1" -> List("--output", "DP1", "--auto", "--right-of", "eDP1", "--rotate", "normal"),
|
|
"HDMI2" -> List("--output", "HDMI2", "--auto", "--left-of", "eDP1", "--rotate", "normal")
|
|
)
|
|
|
|
val interfaceMapOff = Map[String, Seq[String]](
|
|
"DP1" -> List("--output", "DP1", "--off"),
|
|
"DP2" -> List("--output", "DP2", "--off"),
|
|
"HDMI1" -> List("--output", "HDMI1", "--off"),
|
|
"HDMI2" -> List("--output", "HDMI2", "--off")
|
|
)
|
|
|
|
val interfacesOn = ("/usr/bin/xrandr" #| Seq("grep", "-w", "connected") #| Seq("tr", "-s", "' '") #| Seq("cut", "-d", " ", "-f", "1")).!!.trim.split("\n")
|
|
val interfacesOff = ("/usr/bin/xrandr" #| Seq("grep", "-w", "disconnected") #| Seq("tr", "-s", "' '") #| Seq("cut", "-d", " ", "-f", "1")).!!.trim.split("\n")
|
|
var execCmd = "/usr/bin/xrandr" :: eDP1 ++
|
|
interfacesOn.flatMap(i => interfaceMapOn.getOrElse(i.toUpperCase, List.empty)) ++
|
|
interfacesOff.flatMap(i => interfaceMapOff.getOrElse(i.toUpperCase, List.empty))
|
|
|
|
println(s"Enabled interfaces: ${interfacesOn.mkString(" ")}")
|
|
println(s"Disabled interfaces: ${interfacesOff.mkString(" ")}")
|
|
println(s"Executing command line: $execCmd")
|
|
|
|
execCmd.!
|