diff --git a/parts/displays/puavodisplays/xrandr.py b/parts/displays/puavodisplays/xrandr.py index 4ace1210ae..9d2dc309f9 100644 --- a/parts/displays/puavodisplays/xrandr.py +++ b/parts/displays/puavodisplays/xrandr.py @@ -67,7 +67,7 @@ def __repr__(self) -> str: ( ( _TokenId.CONNECTOR, - r"^(?P[^\s]+) (?Pconnected|disconnected) .*$", + r"^(?P[^\s]+) (?Pconnected|disconnected) (?Pprimary|).*$", ), ( _TokenId.EOF, @@ -178,10 +178,15 @@ def __action_create_output( *, name: str, state: str, + primary: str, ) -> None: if name in self.__displays: raise UnexpectedOutputError("display is a duplicate", name) - self.__displays[name] = self.__last_output = {"name": name, "state": state} + self.__displays[name] = self.__last_output = { + "name": name, + "state": state, + "is_primary": primary != "", + } def __action_create_prop( self, diff --git a/parts/displays/tests/test_xrandr.py b/parts/displays/tests/test_xrandr.py index cf9ed7f786..c05bee71ee 100644 --- a/parts/displays/tests/test_xrandr.py +++ b/parts/displays/tests/test_xrandr.py @@ -19,6 +19,7 @@ def test_prop_parser(): assert prop == { "eDP-1": { + "is_primary": True, "name": "eDP-1", "state": "connected", "current_mode": { @@ -746,6 +747,7 @@ def test_prop_parser(): }, }, "DP-1": { + "is_primary": False, "name": "DP-1", "state": "disconnected", "props": { @@ -828,6 +830,7 @@ def test_prop_parser(): }, }, "HDMI-1": { + "is_primary": False, "name": "HDMI-1", "state": "disconnected", "props": { @@ -912,6 +915,7 @@ def test_prop_parser(): }, }, "DP-2": { + "is_primary": False, "name": "DP-2", "state": "disconnected", "props": { @@ -994,6 +998,7 @@ def test_prop_parser(): }, }, "HDMI-2": { + "is_primary": False, "name": "HDMI-2", "state": "disconnected", "props": { @@ -1078,6 +1083,7 @@ def test_prop_parser(): }, }, "DP-3": { + "is_primary": False, "name": "DP-3", "state": "disconnected", "props": { @@ -1160,6 +1166,7 @@ def test_prop_parser(): }, }, "HDMI-3": { + "is_primary": False, "name": "HDMI-3", "state": "disconnected", "props": {