xrandr

package module
v0.0.0-...-67143ce Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 20, 2025 License: MIT Imports: 7 Imported by: 8

README

Golang XRandR wrapper Go Report Card Build Status Coverage Status

Golang xrandr wrapper. The entire functionality is based on xrandr output.

import (
	"github.com/vcraescu/go-xrandr"
	"github.com/davecgh/go-spew/spew"
)

func main() {
	screens, err := xrandr.GetScreens()
	if err != nil {
		panic(err)
	}
	
	spew.Dump(screens)
}

will print:

(xrandr.Screens) (len=1 cap=1) {
 (xrandr.Screen) {
  No: (int) 0,
  CurrentResolution: (xrandr.Size) {
   Width: (float32) 8959,
   Height: (float32) 2880
  },
  MinResolution: (xrandr.Size) {
   Width: (float32) 8,
   Height: (float32) 8
  },
  MaxResolution: (xrandr.Size) {
   Width: (float32) 32767,
   Height: (float32) 32767
  },
  Monitors: ([]xrandr.Monitor) (len=3 cap=4) {
   (xrandr.Monitor) {
    ID: (string) (len=6) "HDMI-0",
    Modes: ([]xrandr.Mode) (len=14 cap=16) {
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 3840,
       Height: (float32) 2160
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 30,
        Current: (bool) true,
        Preferred: (bool) true
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 29.97,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 25,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 23.98,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1920,
       Height: (float32) 1200
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1920,
       Height: (float32) 1080
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=7 cap=8) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 50,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 23.98,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.05,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 50.04,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1680,
       Height: (float32) 1050
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1600,
       Height: (float32) 1200
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 1024
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 75.02,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.02,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 800
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.81,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 720
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=3 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 50,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1152,
       Height: (float32) 864
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 75,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1024,
       Height: (float32) 768
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 75.03,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 800,
       Height: (float32) 600
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 75,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.32,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 720,
       Height: (float32) 576
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 50,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 720,
       Height: (float32) 480
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 640,
       Height: (float32) 480
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=3 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 75,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.93,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     }
    },
    Primary: (bool) true,
    Size: (xrandr.Size) {
     Width: (float32) 597,
     Height: (float32) 336
    },
    Connected: (bool) true,
    Resolution: (xrandr.Size) {
     Width: (float32) 5119,
     Height: (float32) 2879
    },
    Position: (xrandr.Position) {
     X: (int) 0,
     Y: (int) 0
    }
   },
   (xrandr.Monitor) {
    ID: (string) (len=7) "eDP-1-1",
    Modes: ([]xrandr.Mode) (len=50 cap=64) {
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 3840,
       Height: (float32) 2160
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) true,
        Preferred: (bool) true
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.98,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 48.02,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.97,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 3200,
       Height: (float32) 1800
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 2880,
       Height: (float32) 1620
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.97,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 2560,
       Height: (float32) 1600
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.97,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 2560,
       Height: (float32) 1440
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 2048,
       Height: (float32) 1536
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1920,
       Height: (float32) 1440
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1856,
       Height: (float32) 1392
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.01,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1792,
       Height: (float32) 1344
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.01,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 2048,
       Height: (float32) 1152
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.98,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.9,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.91,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1920,
       Height: (float32) 1200
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1920,
       Height: (float32) 1080
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.01,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.97,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.93,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1600,
       Height: (float32) 1200
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1680,
       Height: (float32) 1050
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1400,
       Height: (float32) 1050
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.98,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1600,
       Height: (float32) 900
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.82,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 1024
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.02,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1400,
       Height: (float32) 900
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 960
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1440,
       Height: (float32) 810
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.97,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1368,
       Height: (float32) 768
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.85,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 800
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.97,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.81,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.91,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1280,
       Height: (float32) 720
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.86,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.74,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1024,
       Height: (float32) 768
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.04,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 960,
       Height: (float32) 720
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 928,
       Height: (float32) 696
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.05,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 896,
       Height: (float32) 672
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.01,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 1024,
       Height: (float32) 576
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.9,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.82,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 960,
       Height: (float32) 600
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.93,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 960,
       Height: (float32) 540
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.99,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.63,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.82,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 800,
       Height: (float32) 600
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=3 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.32,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 56.25,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 840,
       Height: (float32) 525
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.01,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 864,
       Height: (float32) 486
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.92,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.57,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 700,
       Height: (float32) 525
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.98,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 800,
       Height: (float32) 450
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.95,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.82,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 640,
       Height: (float32) 512
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.02,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 700,
       Height: (float32) 450
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.96,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 640,
       Height: (float32) 480
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.94,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 720,
       Height: (float32) 405
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.51,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 58.99,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 684,
       Height: (float32) 384
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.85,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 640,
       Height: (float32) 400
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.88,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.98,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 640,
       Height: (float32) 360
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=4 cap=4) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.86,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.83,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.84,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.32,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 512,
       Height: (float32) 384
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 512,
       Height: (float32) 288
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.92,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 480,
       Height: (float32) 270
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.63,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.82,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 400,
       Height: (float32) 300
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.32,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 56.34,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 432,
       Height: (float32) 243
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.92,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.57,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 320,
       Height: (float32) 240
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=1 cap=1) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 60.05,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 360,
       Height: (float32) 202
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.51,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.13,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     },
     (xrandr.Mode) {
      Resolution: (xrandr.Size) {
       Width: (float32) 320,
       Height: (float32) 180
      },
      RefreshRates: ([]xrandr.RefreshRate) (len=2 cap=2) {
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.84,
        Current: (bool) false,
        Preferred: (bool) false
       },
       (xrandr.RefreshRate) {
        Value: (xrandr.RefreshRateValue) 59.32,
        Current: (bool) false,
        Preferred: (bool) false
       }
      }
     }
    },
    Primary: (bool) false,
    Size: (xrandr.Size) {
     Width: (float32) 346,
     Height: (float32) 194
    },
    Connected: (bool) true,
    Resolution: (xrandr.Size) {
     Width: (float32) 3840,
     Height: (float32) 2160
    },
    Position: (xrandr.Position) {
     X: (int) 5119,
     Y: (int) 0
    }
   },
   (xrandr.Monitor) {
    ID: (string) (len=6) "DP-1-1",
    Modes: ([]xrandr.Mode) <nil>,
    Primary: (bool) false,
    Size: (xrandr.Size) {
     Width: (float32) 0,
     Height: (float32) 0
    },
    Connected: (bool) false,
    Resolution: (xrandr.Size) {
     Width: (float32) 0,
     Height: (float32) 0
    },
    Position: (xrandr.Position) {
     X: (int) 0,
     Y: (int) 0
    }
   }
  }
 }
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CommandBuilder

type CommandBuilder struct {
	// contains filtered or unexported fields
}

CommandBuilder xrandr command builder

func Command

func Command() CommandBuilder

Command CommandBuilder constructor

func (CommandBuilder) AddOutputCommand

func (cb CommandBuilder) AddOutputCommand(ocb OutputCommandBuilder) CommandBuilder

AddOutputCommand adds a new output command to command builder

func (CommandBuilder) DPI

func (cb CommandBuilder) DPI(dpi int) CommandBuilder

DPI sets the dpi --dpi flag

func (CommandBuilder) Output

func (cb CommandBuilder) Output(monitor Monitor) OutputCommandBuilder

Output starts a new output command

func (CommandBuilder) Run

func (cb CommandBuilder) Run() error

Run runs all the xrandr command returned by RunnableCommands method

func (CommandBuilder) RunnableCommands

func (cb CommandBuilder) RunnableCommands() ([]*exec.Cmd, error)

RunnableCommands returns all the xrandr commands

func (CommandBuilder) ScreenSize

func (cb CommandBuilder) ScreenSize(size Size) CommandBuilder

ScreenSize sets the screen size --fb flag

type Mode

type Mode struct {
	Resolution   Size          `json:"resolution"`
	RefreshRates []RefreshRate `json:"refresh_rates"`
}

Mode xrandr output mode

func (Mode) CurrentRefreshRate

func (md Mode) CurrentRefreshRate() (RefreshRate, bool)

CurrentRefreshRate returns mode current refresh rate

type Monitor

type Monitor struct {
	ID         string   `json:"id"`
	Modes      []Mode   `json:"modes"`
	Primary    bool     `json:"primary"`
	Size       Size     `json:"size"`
	Connected  bool     `json:"connected"`
	Resolution Size     `json:"resolution"`
	Position   Position `json:"position"`
}

Monitor all the info of xrandr output

func (Monitor) CurrentMode

func (m Monitor) CurrentMode() (Mode, bool)

CurrentMode returns monitor/output current mode

func (Monitor) DPI

func (m Monitor) DPI() (float32, error)

DPI returns monitor/output dpi

func (Monitor) HorizontalDPI

func (m Monitor) HorizontalDPI() (float32, error)

HorizontalDPI monitor horizontal dpi

func (Monitor) SizeIn

func (m Monitor) SizeIn() Size

SizeIn returns monitor/output size in inches

func (Monitor) SizeMM

func (m Monitor) SizeMM() Size

SizeMM returns monitor/output size in milimeters

func (Monitor) VerticalDPI

func (m Monitor) VerticalDPI() (float32, error)

VerticalDPI monitor vertical dpi

type OutputCommandBuilder

type OutputCommandBuilder struct {
	// contains filtered or unexported fields
}

OutputCommandBuilder xrandr command builder for flag --output

func NewOutputCommand

func NewOutputCommand(monitor Monitor) OutputCommandBuilder

NewOutputCommand output command builder constructor

func (OutputCommandBuilder) EndOutput

func (ocb OutputCommandBuilder) EndOutput() CommandBuilder

EndOutput ends the output command builder inside command builder

func (OutputCommandBuilder) LeftOf

LeftOf sets --left-of flag

func (OutputCommandBuilder) MakePrimary

func (ocb OutputCommandBuilder) MakePrimary() OutputCommandBuilder

MakePrimary sets --primary flag

func (OutputCommandBuilder) Position

func (ocb OutputCommandBuilder) Position(position Position) OutputCommandBuilder

Position sets --position flag

func (OutputCommandBuilder) Resolution

func (ocb OutputCommandBuilder) Resolution(resolution Size) OutputCommandBuilder

Resolution sets --mode flag

func (OutputCommandBuilder) Rotate

func (ocb OutputCommandBuilder) Rotate(rotation Rotation) OutputCommandBuilder

Rotate sets the --rotate flag

func (OutputCommandBuilder) Scale

Scale sets the --scale flag

func (OutputCommandBuilder) SetPrimary

func (ocb OutputCommandBuilder) SetPrimary(primary bool) OutputCommandBuilder

SetPrimary sets --primary flag

type Position

type Position struct {
	X int `json:"x"`
	Y int `json:"y"`
}

Position screen position

type RefreshRate

type RefreshRate struct {
	Value     RefreshRateValue `json:"value"`
	Current   bool             `json:"current"`
	Preferred bool             `json:"preferred"`
}

RefreshRate mode refresh rate

type RefreshRateValue

type RefreshRateValue float32

RefreshRateValue refresh rate value

type Rotation

type Rotation string

Rotation screen rotation

const (
	RotationNormal Rotation = "normal"
	RotationLeft   Rotation = "left"
	RotationRight  Rotation = "right"
	RotationInvert Rotation = "inverted"
)

type Screen

type Screen struct {
	No                int       `json:"no"`
	CurrentResolution Size      `json:"current_resolution"`
	MinResolution     Size      `json:"min_resolution"`
	MaxResolution     Size      `json:"max_resolution"`
	Monitors          []Monitor `json:"monitors"`
}

Screen all the info of xrandr screen

func (Screen) MonitorByID

func (s Screen) MonitorByID(ID string) (Monitor, bool)

MonitorByID returns the output with the given ID

type Screens

type Screens []Screen

Screens slice of screens

func GetScreens

func GetScreens() (Screens, error)

GetScreens returns all the screens info from xrandr output

func (Screens) MonitorByID

func (screens Screens) MonitorByID(ID string) (Monitor, bool)

MonitorByID returns the output with the given ID

type Size

type Size struct {
	Width  float32 `json:"width"`
	Height float32 `json:"height"`
}

Size screen size or resolution

func (Size) Rescale

func (s Size) Rescale(scale float32) Size

Rescale recalculate monitor/output resolution

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL