lib

package
v0.0.0-...-844d4af Latest Latest
Warning

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

Go to latest
Published: May 29, 2023 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Overview

library package wrapping swaymsg concerning monitor layout and some helper functions

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenericJSONDecode

func GenericJSONDecode(rd io.Reader, pl interface{}) error

helper function for demarshalling JSON generically

func MsgSway

func MsgSway(configFile string)

func PrintConfig

func PrintConfig(cfg Config) string

Build the config-command-string (output and focus-commands) for writing into the monitor-config-file

func PrintModes

func PrintModes(screens []Screen)

Print the available modes of all screens, similar to xrandr's default output

func ProcessMode

func ProcessMode(outputScreen *Screen, mode string, refresh float64) error

sets the mode for a Screen; takes the refresh rate both from the mode and the refresh parameter to SwayRandr the parameter takes precedence

func ProcessPosition

func ProcessPosition(outputScreen *Screen, leftOf string, rightOf string, above string, below string, screens []Screen) error

process positioning parameters to the SwayRandr program (left-of, right-of, above and below); sets the x and y options of the involved screens accordingly

func QuerySway

func QuerySway(method string, pl interface{}) error

func ReloadSway

func ReloadSway()

tell sway to reload the configuration (i.e. reconfigure the monitor set-up, after the config-files where updated)

func SwayVersion

func SwayVersion() string

read the version Information from swaymsg and return the human-readable version string

Types

type Config

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

Configurations are used for setting the outputs in the config-files for sway

func CreateConfig

func CreateConfig(screens []Screen) Config

create config from updated screen-information

type ConfigScreen

type ConfigScreen struct {
	Screen     Screen     // "Reference" to the screen-object
	Mode       ScreenMode // the mode to be selected
	Rect       ScreenRect // (only x,y used): describe the position of the screen
	Background ScreenBg   // background image (not used atm)
	Scale      float64    // scale the contents of the monitor
	Enabled    bool       // is the monitor enabled (i.e. on)?
	Focused    bool       // will it be focused on boot-up of sway?
}

one ConfigScreen is used per Monitor to describe its _new_ configuration to be set in the config-files

type Inputs

type Inputs struct {
	Identifier           string
	Name                 string
	Vendor               int
	Product              int
	Type                 string
	XkbLayoutNames       []string `json:'xkb_layout_names'`
	XkbActiveLayoutIndex int
	XkbActiveLayoutName  string
	Libinput             LibInput
}

func ReadInputs

func ReadInputs() ([]Inputs, error)

type LibInput

type LibInput struct {
	SendEvent       string `json:'send_event'`
	AccelSpeed      float64
	AccelProfile    string
	NaturalScroll   string
	LeftHanded      string
	MiddleEmulation string
	ScrollMethod    string
	ScrollButton    int
	Tap             string
	TapButtonMap    string
	TapDrag         string
	TapDragLock     string
	ClickMethod     string
	Dwt             string
}

type Screen

type Screen struct {
	Id                 int          // Id of that monitor
	Name               string       // Name (connection) like HDMI-1
	Rect               ScreenRect   // Describes the rectangle of the monitor
	WindowRect         ScreenRect   // dunno
	DecoRect           ScreenRect   // dunno
	Geometry           ScreenRect   // dunno
	Border             string       // dunno
	CurrentBorderWidth int          // dunno
	Layout             string       // dunno
	Orientation        string       // horizontally or vertically
	Percent            float64      // dunno
	Window             string       // dunno -- mostly empty?
	Urgent             bool         // dunno
	Marks              []struct{}   // dunno
	FullscreenMode     bool         // dunno
	Nodes              []struct{}   // dunno
	FloatingNodes      []struct{}   // dunno
	Sticky             bool         // dunno
	Type               string       // dunno
	Active             bool         // is the monitor enabled or disabled=
	Dpms               bool         // dunno
	Primary            bool         // is it the primary monitor (different from focused on boot-up)
	Make               string       // the make of the monitor
	Model              string       // the model of the monitor
	Serial             string       // serial number of the monitor
	Scale              float64      // float for scaling the monitor
	ScaleFilter        string       // describes the filter used for scaling the monitor
	Transform          string       // transformations on the output (rotation)
	AdaptiveSyncStatus string       // duno
	CurrentWorkspace   string       // current workspace on that monitor
	Modes              []ScreenMode // lists the available modes on the monitor; same resolutions may have differing refresh rates; rates are given in Hz
	CurrentMode        ScreenMode   `json:"current_mode"` // dunno
	MaxRenderTime      int          // dunno
	Focused            bool         // is the monitor focused on boot-up?
	SubpixelHinting    string       // dunno
}

structre describing a monitor; wraps the return value of `swaymsg -t get_outputs -r`; the JSON-structure is probably used for more than output-objects in swaymsg

func FindScreen

func FindScreen(screens []Screen, output string) *Screen

find screen-structure by the connection name (Screen.Name)

func ReadScreen

func ReadScreen() ([]Screen, error)

read the screen information from swaymsg and return an Array of Screen-Structures

type ScreenBg

type ScreenBg struct {
	Path     string
	Fillmode string
}

structure describing Config Options for background per monitor not used atm

type ScreenMode

type ScreenMode struct {
	Width   int // width in pixel in that mode
	Height  int // height in pixel
	Refresh int // refresh rate in that resolution in Hz
}

structure for the modes of a monitor

type ScreenRect

type ScreenRect struct {
	X      int // x position for the monitor
	Y      int // y position for the monitor
	Width  int // Width in pixel
	Height int // Height in pixel
}

structure describing the rectangle a monitor takes up in the whole virtual framebuffer

type SwayVer

type SwayVer struct {
	HumanReadable        string `json:"human_readable"` // human readable Version string (like v1.5)
	Variant              string // dunno
	Major                int    // dunno, returns 0
	Minor                int    // dunno, returns 0
	Patch                int    // dunno, returns 0
	LoadedConfigFileName string `json:"loaded_config_file_name"` // the loaded config file (main config; not listing its include-files)
}

structure wrapping `swaymsg -t get_version -r`; only "HumanReadable" is used atm

Jump to

Keyboard shortcuts

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