Better xrandr

This commit is contained in:
Thomas Forgione 2023-11-27 21:05:45 +01:00
parent 86e3c95327
commit b08325c2cf
1 changed files with 30 additions and 4 deletions

View File

@ -1,9 +1,13 @@
# xrandr wrapper for nushell
def xrandr [] {
mut output = []
mut current_screen: record<name: string, connected: bool, resolutions: list<string>> = {
mut current_screen = {
name: ""
connected: false
on: false
primary: false
resolution: null
position: null
resolutions: []
}
@ -21,11 +25,33 @@ def xrandr [] {
if $current_screen.name != "" {
$output = ($output | append $current_screen)
$current_screen.resolutions = []
$current_screen.on = false
$current_screen.resolution = null
$current_screen.position = null
}
$current_screen.name = ($split | get 0)
$current_screen.connected = (($split | get 1) != "disconnected")
$current_screen.primary = (($split | get 2) == "primary")
let resolution = if $current_screen.primary {
($split | get 3 | split column -c '+' | get column1 | get 0)
} else {
($split | get 2 | split column -c '+' | get column1 | get 0)
}
if not ($resolution | str starts-with "(") {
$current_screen.on = true
$current_screen.resolution = $resolution
$current_screen.position = if $current_screen.primary {
($split | get 3 | split column -c '+' | each { "+" + $in.column2 + "+" + $in.column3 } | get 0)
} else {
($split | get 2 | split column -c '+' | each { "+" + $in.column2 + "+" + $in.column3 } | get 0)
}
}
$current_screen.name = (echo $split | get 0)
$current_screen.connected = ((echo $split | get 1) != "disconnected")
$current_screen.resolutions = []
} else {
$current_screen.resolutions = ($current_screen.resolutions | append ($split | get 1))