Workaround xrandr bug: "cannot find crtc for output" - efficient solution
xrandr will typically fail when switching outputs, if the maximum number is already enabled. This patch will cause xrandr to be called twice: - First invocation will only disable outputs, freeing up CRTCs - Second invocation will only enable outputs
This commit is contained in:
parent
3939171565
commit
83355f418b
23
autorandr
23
autorandr
|
@ -174,7 +174,28 @@ config_equal() {
|
||||||
}
|
}
|
||||||
|
|
||||||
load_cfg_xrandr() {
|
load_cfg_xrandr() {
|
||||||
sed 's!^!--!' "$1" | xargs $XRANDR
|
# sed 1: Prefix arguments with "--"
|
||||||
|
# sed 2: Merge arguments into one line per output
|
||||||
|
# sed 3: Merge into two lines, all --off outputs in the first one
|
||||||
|
sed 's/^/--/' "$1" | sed -e '
|
||||||
|
:START
|
||||||
|
/\n--output/{P;D}
|
||||||
|
s/\n/ /
|
||||||
|
N;bSTART' | sed -e '
|
||||||
|
### First line
|
||||||
|
/ --off/{
|
||||||
|
G
|
||||||
|
# Merge if next line contains --off
|
||||||
|
s/\n\([^\n]* --off\)/ \1/
|
||||||
|
h
|
||||||
|
$!d;b
|
||||||
|
}
|
||||||
|
### Last line
|
||||||
|
H;x
|
||||||
|
# Merge if previous line contains --mode
|
||||||
|
s/\(--mode [^\n]*\)\n/\1 /
|
||||||
|
h
|
||||||
|
$!d' | xargs -L 1 $XRANDR
|
||||||
}
|
}
|
||||||
|
|
||||||
load_cfg_disper() {
|
load_cfg_disper() {
|
||||||
|
|
Loading…
Reference in New Issue